diff --git a/src/modules/reports/report/report.service.ts b/src/modules/reports/report/report.service.ts index 3613ca1..a6a9e74 100644 --- a/src/modules/reports/report/report.service.ts +++ b/src/modules/reports/report/report.service.ts @@ -99,7 +99,6 @@ export class ReportService extends BaseReportService { const builder = new ReportQueryBuilder(reportConfig, queryModel); const SQL = builder.getSql(); const queryResult = await this.dataSource.query(SQL); - const realData = []; const configColumns = reportConfig.column_configs; diff --git a/src/modules/reports/shared/configs/transaction-report/configs/booking.ts b/src/modules/reports/shared/configs/transaction-report/configs/booking.ts index ffbcab9..c739600 100644 --- a/src/modules/reports/shared/configs/transaction-report/configs/booking.ts +++ b/src/modules/reports/shared/configs/transaction-report/configs/booking.ts @@ -39,17 +39,16 @@ export default { }, { column: 'main__booking_date', - query: 'main.booking_date', + query: `to_char(main.booking_date, 'DD-MM-YYYY')`, label: 'Tgl. Booking', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'main__no_of_group', - query: 'main.no_of_group', + query: 'main.no_of_group::NUMERIC', label: '#Visitor', - type: DATA_TYPE.DIMENSION, + type: DATA_TYPE.MEASURE, format: DATA_FORMAT.NUMBER, }, { @@ -111,11 +110,10 @@ export default { { column: 'main__invoice_date', - query: 'main.invoice_date', + query: `to_char(main.invoice_date, 'DD-MM-YYYY')`, label: 'Tgl. Invoice', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'main__invoice_code', @@ -126,19 +124,17 @@ export default { }, { column: 'main__settlement_date', - query: 'main.settlement_date', + query: `to_char(main.settlement_date, 'DD-MM-YYYY')`, label: 'Tgl Settlement', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'refund__request_date', - query: 'refund.request_date', + query: `to_char(refund.request_date, 'DD-MM-YYYY')`, label: 'Request Refund', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'refund__code', @@ -149,13 +145,11 @@ export default { }, { column: 'refund__refund_date', - query: 'refund.refund_date', + query: `to_char(refund.refund_date, 'DD-MM-YYYY')`, label: 'Tgl. Refund', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, - { column: 'main__creator_name', query: 'main.creator_name', @@ -190,6 +184,7 @@ export default { filter_column: 'main__booking_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Sumber', @@ -231,6 +226,7 @@ export default { filter_column: 'main__invoice_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Kode Invoice', @@ -243,12 +239,14 @@ export default { filter_column: 'main__settlement_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Request Refund', filter_column: 'refund__request_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Kode Refund', @@ -261,6 +259,7 @@ export default { filter_column: 'refund__refund_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Dibuat Oleh', 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 0631429..68788f8 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 @@ -29,11 +29,10 @@ export default { column_configs: [ { column: 'main__date', - query: 'main.created_at', + query: `to_char(cast(to_timestamp(main.created_at/1000) as date),'DD-MM-YYYY')`, label: 'Tanggal', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_EPOCH, - date_format: 'DD-MM-YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'main__time', @@ -64,6 +63,13 @@ export default { type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, }, + { + column: 'main__pos_name', + query: 'main.pos_name', + label: 'Nama PoS', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.TEXT, + }, { column: 'main__total_balance', query: 'main.total_balance', @@ -77,7 +83,8 @@ export default { filed_label: 'Tanggal', filter_column: 'main__date', field_type: FILTER_FIELD_TYPE.date_range_picker, - filter_type: FILTER_TYPE.DATE_IN_RANGE_EPOCH, + filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Nama Penarik', 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 923dcf0..ce9808f 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 @@ -29,11 +29,10 @@ export default { column_configs: [ { column: 'main__date', - query: 'main.created_at', + query: `to_char(cast(to_timestamp(main.created_at/1000) as date),'DD-MM-YYYY')`, label: 'Tanggal', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_EPOCH, - date_format: 'DD-MM-YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'main__time', @@ -64,13 +63,21 @@ export default { type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, }, + { + column: 'main__pos_name', + query: 'main.pos_name', + label: 'Nama PoS', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.TEXT, + }, ], filter_configs: [ { filed_label: 'Tanggal', filter_column: 'main__date', field_type: FILTER_FIELD_TYPE.date_range_picker, - filter_type: FILTER_TYPE.DATE_IN_RANGE_EPOCH, + filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Tipe', 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 52815ca..bc1c3b1 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 @@ -45,12 +45,11 @@ export default { column_configs: [ { - column: 'main__settlement_date', - query: 'main.settlement_date', - label: 'Tanggal Transaksi', + column: 'main__payment_date', + query: `to_char(main.payment_date, 'DD-MM-YYYY')`, + label: 'Tgl. Transaksi', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 's_period_type__name', @@ -59,13 +58,6 @@ 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: `CASE WHEN main.type != 'counter' THEN main.invoice_code ELSE null END`, @@ -136,6 +128,13 @@ export default { type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, }, + { + column: 'main__creator_counter_name', + query: 'main.creator_counter_name', + label: 'Nama PoS', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.TEXT, + }, { column: 'main__customer_name', query: 'main.customer_name', @@ -160,10 +159,11 @@ export default { ], filter_configs: [ { - filed_label: 'Tanggal Transaksi', - 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, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Tipe Rate', 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 8396bfb..6478d1b 100644 --- a/src/modules/reports/shared/configs/transaction-report/configs/reconciliation.ts +++ b/src/modules/reports/shared/configs/transaction-report/configs/reconciliation.ts @@ -38,27 +38,24 @@ export default { }, { column: 'main__payment_date', - query: 'main.payment_date', + query: `CASE WHEN main.payment_date is not null THEN to_char(main.payment_date, 'DD-MM-YYYY') ELSE null END`, label: 'Tgl. Transaksi', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'main__payment_date_bank', - query: 'main.payment_date_bank', + query: `CASE WHEN main.payment_date_bank is not null THEN to_char(main.payment_date_bank, 'DD-MM-YYYY') ELSE null END`, label: 'Tgl. Transaksi Bank', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'main__reconciliation_confirm_date', - query: 'main.reconciliation_confirm_date', + query: `CASE WHEN main.reconciliation_confirm_date is not null THEN to_char(cast(to_timestamp(COALESCE(main.reconciliation_confirm_date::NUMERIC)/1000) as date),'DD-MM-YYYY') ELSE null END`, label: 'Tgl. Konfirmasi', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'main__payment_code_reference', @@ -148,18 +145,21 @@ export default { filter_column: 'main__payment_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + date_format: 'DD-MM-YYYY', }, { 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, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Tgl. Konfirmasi', filter_column: 'main__reconciliation_confirm_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Referensi', diff --git a/src/modules/reports/shared/configs/transaction-report/configs/refunds.ts b/src/modules/reports/shared/configs/transaction-report/configs/refunds.ts index d0b2322..252f0c8 100644 --- a/src/modules/reports/shared/configs/transaction-report/configs/refunds.ts +++ b/src/modules/reports/shared/configs/transaction-report/configs/refunds.ts @@ -46,19 +46,17 @@ export default { }, { column: 'main__request_date', - query: 'main.request_date', + query: `to_char(main.request_date, 'DD-MM-YYYY')`, label: 'Tgl. Permintaan', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'main__refund_date', - query: 'main.refund_date', + query: `to_char(main.refund_date, 'DD-MM-YYYY')`, label: 'Tgl. Refund', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'tr__payment_code', @@ -69,11 +67,10 @@ export default { }, { column: 'tr__settlement_date', - query: 'tr.settlement_date', + query: `to_char(tr.settlement_date, 'DD-MM-YYYY')`, label: 'Tgl. Settlement', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_EPOCH, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'tr__payment_total', @@ -185,12 +182,14 @@ export default { filter_column: 'main__request_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Tgl. Refund', filter_column: 'main__refund_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Kode Settlement', @@ -203,6 +202,7 @@ export default { filter_column: 'tr__settlement_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Bank Tujuan', diff --git a/src/modules/reports/shared/configs/transaction-report/configs/tax.ts b/src/modules/reports/shared/configs/transaction-report/configs/tax.ts new file mode 100644 index 0000000..ed097fb --- /dev/null +++ b/src/modules/reports/shared/configs/transaction-report/configs/tax.ts @@ -0,0 +1,136 @@ +import { + DATA_FORMAT, + DATA_TYPE, + FILTER_FIELD_TYPE, + FILTER_TYPE, + REPORT_GROUP, +} from '../../../constant'; +import { ReportConfigEntity } from '../../../entities/report-config.entity'; +import { TransactionType } from 'src/modules/transaction/transaction/constants'; +import { STATUS } from 'src/core/strings/constants/base.constants'; + +export default { + group_name: REPORT_GROUP.transaction_report, + unique_name: `${REPORT_GROUP.transaction_report}__tax`, + label: 'Tax Pendapatan', + table_schema: `transactions main + left join transaction_taxes tr_taxes on tr_taxes.transaction_id = main.id`, + main_table_alias: 'main', + whereDefaultConditions: [ + { + column: 'main.status', + filter_type: FILTER_TYPE.TEXT_IN_MEMBER, + values: [STATUS.SETTLED, STATUS.REFUNDED, STATUS.PROCESS_REFUND], + }, + { + column: 'main.is_recap_transaction', + filter_type: FILTER_TYPE.TEXT_EQUAL, + values: [false], + }, + ], + defaultOrderBy: [], + lowLevelOrderBy: [], + filter_period_config: { + hidden: true, + }, + + column_configs: [ + { + column: 'main__payment_date', + query: `to_char(main.payment_date, 'DD-MM-YYYY')`, + label: 'Tgl. Transaksi', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.TEXT, + }, + { + column: 'main__status', + query: 'main.status', + label: 'Status', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.STATUS, + }, + { + column: 'main__type', + query: 'main.type', + label: 'Sumber', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.TEXT, + }, + { + column: '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: `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, + }, + { + column: 'main__payment_total', + query: 'main.payment_total', + label: 'Total Penjualan', + type: DATA_TYPE.MEASURE, + format: DATA_FORMAT.CURRENCY, + }, + { + column: 'main__payment_total_dpp', + query: 'main.payment_total_dpp', + label: 'DPP', + type: DATA_TYPE.MEASURE, + format: DATA_FORMAT.CURRENCY, + }, + { + column: 'tr_taxes__tax_name', + query: 'tr_taxes.tax_name', + label: 'Tipe Tax', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.TEXT, + }, + { + column: 'tr_taxes__tax_total_value', + query: 'tr_taxes.tax_total_value', + label: 'Value Tax', + type: DATA_TYPE.MEASURE, + format: DATA_FORMAT.CURRENCY, + }, + ], + filter_configs: [ + { + 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, + date_format: 'DD-MM-YYYY', + }, + { + filed_label: 'Sumber', + filter_column: 'main__type', + field_type: FILTER_FIELD_TYPE.select, + filter_type: FILTER_TYPE.TEXT_IN_MEMBER, + select_custom_options: [...Object.values(TransactionType)], + }, + { + filed_label: 'Kode Booking', + filter_column: 'main__invoice_code', + field_type: FILTER_FIELD_TYPE.input_tag, + filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, + }, + { + filed_label: 'Kode Pembayaran', + filter_column: 'main__payment_code', + field_type: FILTER_FIELD_TYPE.input_tag, + filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, + }, + { + filed_label: 'Tipe Tax', + filter_column: 'tr_taxes__tax_name', + field_type: FILTER_FIELD_TYPE.input_tag, + filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, + }, + ], +}; diff --git a/src/modules/reports/shared/configs/transaction-report/index.ts b/src/modules/reports/shared/configs/transaction-report/index.ts index c116baa..644760d 100644 --- a/src/modules/reports/shared/configs/transaction-report/index.ts +++ b/src/modules/reports/shared/configs/transaction-report/index.ts @@ -11,6 +11,7 @@ import RefundsReport from './configs/refunds'; import CashierLogReport from './configs/cashier-log'; import CashWithdrawalsReport from './configs/cash-withdrawals'; import ReconciliationReport from './configs/reconciliation'; +import TaxReport from './configs/tax'; export const TransactionReportConfig: ReportConfigEntity[] = [ IncomeReport, @@ -24,4 +25,5 @@ export const TransactionReportConfig: ReportConfigEntity[] = [ CashierLogReport, CashWithdrawalsReport, ReconciliationReport, + TaxReport, ]; diff --git a/src/modules/reports/shared/entities/report-config.entity.ts b/src/modules/reports/shared/entities/report-config.entity.ts index a21abca..fe563d4 100644 --- a/src/modules/reports/shared/entities/report-config.entity.ts +++ b/src/modules/reports/shared/entities/report-config.entity.ts @@ -46,7 +46,7 @@ export interface ReportConfigEntity { whereDefaultConditions?: { column: string; filter_type: FILTER_TYPE; - values: string[]; + values: string[] | boolean[] | number[]; }[]; defaultOrderBy?: string[]; lowLevelOrderBy?: string[];