From 7d9f61985877903c11ec485fa926c7d24b307356 Mon Sep 17 00:00:00 2001 From: Firman Ramdhani <33869609+firmanramdhani@users.noreply.github.com> Date: Thu, 19 Sep 2024 17:49:35 +0700 Subject: [PATCH 1/4] feat(SPG-966): fix report income --- .../configs/income-per-item-master.ts | 13 --- .../configs/income-per-item-master.ts | 86 +++++++++++-------- .../configs/income-per-item.ts | 56 +++++++----- .../transaction-report/configs/income.ts | 78 +++++++++++------ .../shared/entities/report-config.entity.ts | 2 +- .../reports/shared/helpers/query-builder.ts | 8 +- 6 files changed, 141 insertions(+), 102 deletions(-) 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 index c37b543..7612dc1 100644 --- 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 @@ -7,17 +7,4 @@ export default { 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/transaction-report/configs/income-per-item-master.ts b/src/modules/reports/shared/configs/transaction-report/configs/income-per-item-master.ts index 0de61c5..64861c8 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 @@ -27,6 +27,11 @@ export default { 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: [], @@ -36,12 +41,18 @@ export default { column_configs: [ { - column: 'main__settlement_date', - query: 'main.settlement_date', + column: 'main__payment_date', + query: `to_char(main.payment_date, 'DD-MM-YYYY')`, label: 'Tgl. Pendapatan', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, + }, + { + column: 'main__status', + query: 'main.status', + label: 'Status', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.STATUS, }, { column: 'item_owner', @@ -79,26 +90,27 @@ export default { format: DATA_FORMAT.TEXT, }, { - column: 'tr_item__item_name', - query: 'tr_item.item_name', - label: 'Nama Item', + column: 'tr_item__item_type', + query: 'tr_item.item_type', + label: 'Tipe Item', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, }, - { - column: 'tr_item__breakdown_bundling', - query: 'tr_item.breakdown_bundling', - label: 'Breakdown Bundling', - type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.BOOLEAN, - }, { column: 'tr_item_bundling__item_name', - query: 'tr_item_bundling.item_name', + query: `CASE WHEN tr_item.item_type = 'bundling' THEN tr_item.item_name ELSE tr_item_bundling.item_name END`, label: 'Nama Item Bundling', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, }, + + { + column: 'tr_item__item_name', + query: `CASE WHEN tr_item.item_type = 'bundling' THEN tr_item_bundling.item_name ELSE tr_item.item_name END`, + label: 'Nama Item ', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.TEXT, + }, { column: 'main__customer_type', query: 'main.customer_type', @@ -113,6 +125,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: 'tr_item__qty', query: 'tr_item.qty', @@ -164,11 +183,10 @@ export default { }, { column: 'refund__refund_date', - query: 'refund.refund_date', + query: `to_char(refund.refund_date, 'DD-MM-YYYY')`, label: 'Tgl. Pengembalian', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'refund__status', @@ -191,21 +209,6 @@ export default { type: DATA_TYPE.MEASURE, format: DATA_FORMAT.NUMBER, }, - { - column: 'refund_item__refund_total', - query: '(refund_item.refund_total * -1)', - label: 'Total Pengembalian', - type: DATA_TYPE.MEASURE, - format: DATA_FORMAT.CURRENCY, - }, - - { - column: 'transaction_balance', - query: `CASE WHEN refund.id is null THEN tr_item.total_price ELSE tr_item.total_price - refund_item.refund_total END`, - label: 'Balance', - type: DATA_TYPE.MEASURE, - format: DATA_FORMAT.CURRENCY, - }, { column: 'tr_item__item_tenant_share_margin', query: 'tr_item.item_tenant_share_margin', @@ -266,9 +269,10 @@ export default { filter_configs: [ { filed_label: 'Tgl. Pendapatan', - filter_column: 'main__settlement_date', + 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: 'Kepemilikan', @@ -308,11 +312,10 @@ export default { filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, }, { - filed_label: 'Breakdown Item', - filter_column: 'tr_item__breakdown_bundling', - field_type: FILTER_FIELD_TYPE.select, + filed_label: 'Tipe Item', + filter_column: 'tr_item__item_type', + field_type: FILTER_FIELD_TYPE.input_tag, filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, - select_custom_options: ['Yes', 'No'], }, { filed_label: 'Nama Item Bundling', @@ -332,11 +335,18 @@ export default { field_type: FILTER_FIELD_TYPE.input_number, filter_type: FILTER_TYPE.NUMBER_EQUAL, }, + { + filed_label: 'Nama PoS', + filter_column: 'main__creator_counter_name', + field_type: FILTER_FIELD_TYPE.input_tag, + filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, + }, { 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, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Kode Pengembalian', 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 9cb1684..be6d767 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 @@ -26,6 +26,11 @@ export default { 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: [], @@ -35,12 +40,18 @@ export default { column_configs: [ { - column: 'main__settlement_date', - query: 'main.settlement_date', + column: 'main__payment_date', + query: `to_char(main.payment_date, 'DD-MM-YYYY')`, label: 'Tgl. Pendapatan', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, + }, + { + column: 'main__status', + query: 'main.status', + label: 'Status', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.STATUS, }, { column: 'item_owner', @@ -98,6 +109,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: 'tr_item__qty', query: 'tr_item.qty', @@ -149,11 +167,10 @@ export default { }, { column: 'refund__refund_date', - query: 'refund.refund_date', + query: `to_char(refund.refund_date, 'DD-MM-YYYY')`, label: 'Tgl. Pengembalian', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, }, { column: 'refund__status', @@ -176,21 +193,6 @@ export default { type: DATA_TYPE.MEASURE, format: DATA_FORMAT.NUMBER, }, - { - column: 'refund_item__refund_total', - query: '(refund_item.refund_total * -1)', - label: 'Total Pengembalian', - type: DATA_TYPE.MEASURE, - format: DATA_FORMAT.CURRENCY, - }, - - { - column: 'transaction_balance', - query: `CASE WHEN refund.id is null THEN tr_item.total_price ELSE tr_item.total_price - refund_item.refund_total END`, - label: 'Balance', - type: DATA_TYPE.MEASURE, - format: DATA_FORMAT.CURRENCY, - }, { column: 'tr_item__item_tenant_share_margin', query: 'tr_item.item_tenant_share_margin', @@ -238,9 +240,10 @@ export default { filter_configs: [ { filed_label: 'Tgl. Pendapatan', - filter_column: 'main__settlement_date', + 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: 'Kepemilikan', @@ -291,11 +294,18 @@ export default { field_type: FILTER_FIELD_TYPE.input_number, filter_type: FILTER_TYPE.NUMBER_EQUAL, }, + { + filed_label: 'Nama PoS', + filter_column: 'main__creator_counter_name', + field_type: FILTER_FIELD_TYPE.input_tag, + filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, + }, { 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, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Kode Pengembalian', 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 0e5e5d5..85419cd 100644 --- a/src/modules/reports/shared/configs/transaction-report/configs/income.ts +++ b/src/modules/reports/shared/configs/transaction-report/configs/income.ts @@ -29,6 +29,11 @@ export default { 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: [], @@ -38,12 +43,18 @@ export default { column_configs: [ { - column: 'main__settlement_date', - query: 'main.settlement_date', + column: 'main__payment_date', + query: `to_char(main.payment_date, 'DD-MM-YYYY')`, label: 'Tgl. Pendapatan', type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + format: DATA_FORMAT.TEXT, + }, + { + column: 'main__status', + query: 'main.status', + label: 'Status', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.STATUS, }, { column: 'main__type', @@ -88,12 +99,19 @@ export default { format: DATA_FORMAT.TEXT, }, { - column: 'main__no_of_group', - query: 'main.no_of_group', - label: '#Visitor', + column: 'main__creator_counter_name', + query: 'main.creator_counter_name', + label: 'Nama PoS', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, }, + { + column: 'main__no_of_group', + query: 'main.no_of_group::NUMERIC', + label: '#Visitor', + type: DATA_TYPE.MEASURE, + format: DATA_FORMAT.NUMBER, + }, { column: 'item__total_hpp_item', query: 'item.total_hpp_item', @@ -152,11 +170,10 @@ export default { }, { column: 'refund__refund_date', - query: 'refund.refund_date', + query: `to_char(refund.refund_date, 'DD-MM-YYYY')`, label: 'Tgl. Pengembalian', - type: DATA_TYPE.MEASURE, - format: DATA_FORMAT.DATE_TIMESTAMP, - date_format: 'DD/MM/YYYY', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.TEXT, }, { column: 'refund__status', @@ -172,20 +189,20 @@ export default { type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, }, - { - column: 'refund__refund_total', - query: '(refund.refund_total * -1)', - label: 'Total Pengembalian', - 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.MEASURE, - format: DATA_FORMAT.CURRENCY, - }, + // { + // column: 'refund__refund_total', + // query: '(refund.refund_total * -1)', + // label: 'Total Pengembalian', + // 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.MEASURE, + // format: DATA_FORMAT.CURRENCY, + // }, { column: 'main__discount_code', query: 'main.discount_code', @@ -260,10 +277,12 @@ export default { filter_configs: [ { filed_label: 'Tgl. Pendapatan', - filter_column: 'main__settlement_date', + 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', @@ -301,11 +320,18 @@ export default { field_type: FILTER_FIELD_TYPE.input_number, filter_type: FILTER_TYPE.NUMBER_EQUAL, }, + { + filed_label: 'Nama PoS', + filter_column: 'main__creator_counter_name', + field_type: FILTER_FIELD_TYPE.input_tag, + filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, + }, { 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, + date_format: 'DD-MM-YYYY', }, { filed_label: 'Kode Pengembalian', diff --git a/src/modules/reports/shared/entities/report-config.entity.ts b/src/modules/reports/shared/entities/report-config.entity.ts index 71598b8..a21abca 100644 --- a/src/modules/reports/shared/entities/report-config.entity.ts +++ b/src/modules/reports/shared/entities/report-config.entity.ts @@ -12,7 +12,7 @@ export interface ReportColumnConfigEntity { export interface FilterConfigEntity { filter_column: string; filter_type: FILTER_TYPE; - + date_format?: string; filed_label: string; field_type: string; hide_field?: boolean; diff --git a/src/modules/reports/shared/helpers/query-builder.ts b/src/modules/reports/shared/helpers/query-builder.ts index 6c58e96..9f8d51d 100644 --- a/src/modules/reports/shared/helpers/query-builder.ts +++ b/src/modules/reports/shared/helpers/query-builder.ts @@ -331,7 +331,11 @@ export class ReportQueryBuilder { groupKeys.forEach(function (key, index) { const colName = rowGroupCols[index].field; // whereParts.push(colName + ' = "' + key + '"'); - whereParts.push(`${thisSelf.findQueryConfig(colName)} = '${key}'`); + if (!key) { + whereParts.push(`${thisSelf.findQueryConfig(colName)} is null`); + } else { + whereParts.push(`${thisSelf.findQueryConfig(colName)} = '${key}'`); + } }); } @@ -360,9 +364,11 @@ export class ReportQueryBuilder { }); } + console.log({ whereCondition, whereParts }); const tableWhereConditions = [...whereCondition, ...whereParts].filter( Boolean, ); + const defaultWhereConditions = defaultWhereOptions.filter(Boolean); if (tableWhereConditions.length > 0) { From 1d377b574c0742ef988b88ed165dd9be5fe3ff37 Mon Sep 17 00:00:00 2001 From: Firman Ramdhani <33869609+firmanramdhani@users.noreply.github.com> Date: Thu, 19 Sep 2024 17:50:11 +0700 Subject: [PATCH 2/4] feat(SPG-966): fix report income --- src/modules/reports/shared/helpers/query-builder.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/reports/shared/helpers/query-builder.ts b/src/modules/reports/shared/helpers/query-builder.ts index 9f8d51d..99aab40 100644 --- a/src/modules/reports/shared/helpers/query-builder.ts +++ b/src/modules/reports/shared/helpers/query-builder.ts @@ -364,7 +364,6 @@ export class ReportQueryBuilder { }); } - console.log({ whereCondition, whereParts }); const tableWhereConditions = [...whereCondition, ...whereParts].filter( Boolean, ); From 43deb04d92b243401e4cc236737d762bc7709b6e Mon Sep 17 00:00:00 2001 From: Firman Ramdhani <33869609+firmanramdhani@users.noreply.github.com> Date: Thu, 19 Sep 2024 18:22:19 +0700 Subject: [PATCH 3/4] feat(SPG-966): fix report income --- .../configs/transaction-report/configs/cash-withdrawals.ts | 3 +++ .../configs/transaction-report/configs/giving-discounts.ts | 5 +++++ 2 files changed, 8 insertions(+) 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 141dc72..0631429 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 @@ -98,4 +98,7 @@ export default { filter_type: FILTER_TYPE.NUMBER_EQUAL, }, ], + whereCondition(filterModel) { + return [`main.created_at is not null`]; + }, }; 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 026fc6d..52815ca 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 @@ -31,6 +31,11 @@ export default { filter_type: FILTER_TYPE.TEXT_IN_MEMBER, values: [TransactionType.COUNTER], }, + { + column: 'main.is_recap_transaction', + filter_type: FILTER_TYPE.TEXT_EQUAL, + values: [false], + }, ], defaultOrderBy: [], lowLevelOrderBy: [], From aaa0ca6f765e8d8f681d9e197875a3a9c01c66f0 Mon Sep 17 00:00:00 2001 From: Firman Ramdhani <33869609+firmanramdhani@users.noreply.github.com> Date: Fri, 20 Sep 2024 11:32:48 +0700 Subject: [PATCH 4/4] feat: fix report bug and create report tax --- src/modules/reports/report/report.service.ts | 1 - .../transaction-report/configs/booking.ts | 35 +++-- .../configs/cash-withdrawals.ts | 15 +- .../transaction-report/configs/cashier-log.ts | 15 +- .../configs/giving-discounts.ts | 28 ++-- .../configs/reconciliation.ts | 18 +-- .../transaction-report/configs/refunds.ts | 18 +-- .../configs/transaction-report/configs/tax.ts | 136 ++++++++++++++++++ .../configs/transaction-report/index.ts | 2 + .../shared/entities/report-config.entity.ts | 2 +- 10 files changed, 210 insertions(+), 60 deletions(-) create mode 100644 src/modules/reports/shared/configs/transaction-report/configs/tax.ts 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[];