feat(SPG-265): report reconciliation
parent
7a6c784612
commit
b597a2f184
|
@ -0,0 +1,188 @@
|
||||||
|
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 <ReportConfigEntity>{
|
||||||
|
group_name: REPORT_GROUP.transaction_report,
|
||||||
|
unique_name: `${REPORT_GROUP.transaction_report}__reconciliation`,
|
||||||
|
label: 'Rekonsiliasi',
|
||||||
|
table_schema: `transactions main
|
||||||
|
LEFT JOIN payment_methods payment ON payment.id::text = main.payment_type_method_id::text`,
|
||||||
|
main_table_alias: 'main',
|
||||||
|
defaultOrderBy: [],
|
||||||
|
lowLevelOrderBy: [],
|
||||||
|
filter_period_config: {
|
||||||
|
hidden: true,
|
||||||
|
},
|
||||||
|
column_configs: [
|
||||||
|
{
|
||||||
|
column: 'main__reconciliation_status',
|
||||||
|
query: 'main.reconciliation_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__settlement_date',
|
||||||
|
query: 'main.settlement_date',
|
||||||
|
label: 'Tgl. Pendapatan',
|
||||||
|
type: DATA_TYPE.DIMENSION,
|
||||||
|
format: DATA_FORMAT.DATE_TIMESTAMP,
|
||||||
|
date_format: 'DD/MM/YYYY',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
column: 'main__reconciliation_confirm_date',
|
||||||
|
query: 'main.reconciliation_confirm_date',
|
||||||
|
label: 'Tgl. Konfirmasi',
|
||||||
|
type: DATA_TYPE.DIMENSION,
|
||||||
|
format: DATA_FORMAT.DATE_TIMESTAMP,
|
||||||
|
date_format: 'DD/MM/YYYY',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
column: 'main__payment_code_reference',
|
||||||
|
query: 'main.payment_code_reference',
|
||||||
|
label: 'Referensi',
|
||||||
|
type: DATA_TYPE.DIMENSION,
|
||||||
|
format: DATA_FORMAT.TEXT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
column: 'main__payment_type',
|
||||||
|
query: 'main.payment_type',
|
||||||
|
label: 'Metode Pembayaran',
|
||||||
|
type: DATA_TYPE.DIMENSION,
|
||||||
|
format: DATA_FORMAT.TEXT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
column: 'main__payment_type_method_name',
|
||||||
|
query: 'main.payment_type_method_name',
|
||||||
|
label: 'Bank/Issuer',
|
||||||
|
type: DATA_TYPE.DIMENSION,
|
||||||
|
format: DATA_FORMAT.TEXT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
column: 'payment__account_number',
|
||||||
|
query: 'payment.account_number',
|
||||||
|
label: 'Account No.',
|
||||||
|
type: DATA_TYPE.DIMENSION,
|
||||||
|
format: DATA_FORMAT.TEXT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
column: 'main__payment_total',
|
||||||
|
query: 'main.payment_total',
|
||||||
|
label: 'Total',
|
||||||
|
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: 'cashier',
|
||||||
|
query: `CASE WHEN main.type = 'counter' THEN main.creator_name END`,
|
||||||
|
label: 'Kasir',
|
||||||
|
type: DATA_TYPE.DIMENSION,
|
||||||
|
format: DATA_FORMAT.TEXT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
column: 'main__reconciliation_confirm_by',
|
||||||
|
query: 'main.reconciliation_confirm_by',
|
||||||
|
label: 'Dikonfirmasi Oleh',
|
||||||
|
type: DATA_TYPE.DIMENSION,
|
||||||
|
format: DATA_FORMAT.TEXT,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
filter_configs: [
|
||||||
|
{
|
||||||
|
filed_label: 'Status',
|
||||||
|
filter_column: 'main__reconciliation_status',
|
||||||
|
field_type: FILTER_FIELD_TYPE.select,
|
||||||
|
filter_type: FILTER_TYPE.TEXT_IN_MEMBER,
|
||||||
|
select_custom_options: [
|
||||||
|
STATUS.PENDING,
|
||||||
|
STATUS.CONFIRMED,
|
||||||
|
STATUS.REJECTED,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
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: 'Tgl. Pendapatan',
|
||||||
|
filter_column: 'main__settlement_date',
|
||||||
|
field_type: FILTER_FIELD_TYPE.date_range_picker,
|
||||||
|
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
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,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filed_label: 'Referensi',
|
||||||
|
filter_column: 'main__payment_code_reference',
|
||||||
|
field_type: FILTER_FIELD_TYPE.input_tag,
|
||||||
|
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filed_label: 'Metode Pembayaran',
|
||||||
|
filter_column: 'main__payment_type',
|
||||||
|
field_type: FILTER_FIELD_TYPE.input_tag,
|
||||||
|
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filed_label: 'Issuer',
|
||||||
|
filter_column: 'main__payment_type_method_name',
|
||||||
|
field_type: FILTER_FIELD_TYPE.input_tag,
|
||||||
|
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filed_label: 'Account No.',
|
||||||
|
filter_column: 'payment__account_number',
|
||||||
|
field_type: FILTER_FIELD_TYPE.input_tag,
|
||||||
|
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filed_label: 'Kasir',
|
||||||
|
filter_column: 'cashier',
|
||||||
|
field_type: FILTER_FIELD_TYPE.input_tag,
|
||||||
|
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filed_label: 'Dikonfirmasi Oleh',
|
||||||
|
filter_column: 'main__reconciliation_confirm_by',
|
||||||
|
field_type: FILTER_FIELD_TYPE.input_tag,
|
||||||
|
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
whereCondition(filterModel) {
|
||||||
|
const statusFilter = filterModel?.main__reconciliation_status?.filter ?? [];
|
||||||
|
if (statusFilter.length === 0) {
|
||||||
|
return [`main.reconciliation_status NOT IN ('${STATUS.DRAFT}')`];
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
};
|
|
@ -9,6 +9,7 @@ import BookingReport from './configs/booking';
|
||||||
import RefundsReport from './configs/refunds';
|
import RefundsReport from './configs/refunds';
|
||||||
import CashierLogReport from './configs/cashier-log';
|
import CashierLogReport from './configs/cashier-log';
|
||||||
import CashWithdrawalsReport from './configs/cash-withdrawals';
|
import CashWithdrawalsReport from './configs/cash-withdrawals';
|
||||||
|
import ReconciliationReport from './configs/reconciliation';
|
||||||
|
|
||||||
export const TransactionReportConfig: ReportConfigEntity[] = [
|
export const TransactionReportConfig: ReportConfigEntity[] = [
|
||||||
IncomeReport,
|
IncomeReport,
|
||||||
|
@ -20,4 +21,5 @@ export const TransactionReportConfig: ReportConfigEntity[] = [
|
||||||
RefundsReport,
|
RefundsReport,
|
||||||
CashierLogReport,
|
CashierLogReport,
|
||||||
CashWithdrawalsReport,
|
CashWithdrawalsReport,
|
||||||
|
ReconciliationReport,
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in New Issue