Merge branch 'development' of ssh://git.eigen.co.id:2222/eigen/pos-be into development
continuous-integration/drone/tag Build is failing Details

pull/65/head 20.1.28-alpha.1
shancheas 2024-08-12 13:42:03 +07:00
commit 93fa32df80
11 changed files with 921 additions and 106 deletions

View File

@ -166,7 +166,7 @@ export default <ReportConfigEntity>{
{
column: 'main__updated_at',
query: 'main.updated_at',
label: 'Tgl Update',
label: 'Tgl. Update',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.DATE_EPOCH,
},
@ -185,6 +185,12 @@ export default <ReportConfigEntity>{
STATUS.REJECTED,
],
},
{
filed_label: 'Tgl. Booking',
filter_column: 'main__booking_date',
field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
},
{
filed_label: 'Sumber',
filter_column: 'main__type',
@ -196,5 +202,77 @@ export default <ReportConfigEntity>{
TransactionType.ONLINE,
],
},
{
filed_label: 'Tipe',
filter_column: 'main__customer_type',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Kontak',
filter_column: 'main__customer_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Tipe Pembayaran',
filter_column: 'main__payment_type',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Bank',
filter_column: 'main__payment_type_method_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Tgl. Invoice',
filter_column: 'main__invoice_date',
field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
},
{
filed_label: 'Kode Invoice',
filter_column: 'main__invoice_code',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Tgl. Settlement',
filter_column: 'main__settlement_date',
field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
},
{
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,
},
{
filed_label: 'Kode Refund',
filter_column: 'refund__code',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Tgl. Refund',
filter_column: 'refund__refund_date',
field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
},
{
filed_label: 'Dibuat Oleh',
filter_column: 'main__creator_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Tgl. Update',
filter_column: 'main__updated_at',
field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_EPOCH,
},
],
};

View File

@ -73,6 +73,12 @@ export default <ReportConfigEntity>{
},
],
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,
},
{
filed_label: 'Nama Penarik',
filter_column: 'main__drawn_by_name',
@ -85,5 +91,11 @@ export default <ReportConfigEntity>{
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_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
],
};

View File

@ -66,6 +66,12 @@ export default <ReportConfigEntity>{
},
],
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,
},
{
filed_label: 'Tipe',
filter_column: 'main__type',

View File

@ -0,0 +1,192 @@
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}__giving_discounts`,
label: 'Pemberian Diskon',
table_schema: `transactions main
LEFT JOIN vip_codes vip ON vip.id::text = main.discount_code_id::text
LEFT JOIN vip_categories vip_category ON vip_category.id::text = vip.vip_category_id::text
LEFT JOIN users account ON account.id::text = vip.creator_id::text
LEFT JOIN user_privileges privilege ON privilege.id::text = account.user_privilege_id::text
LEFT JOIN season_types s_period_type ON s_period_type.id::text = main.season_period_type_id`,
main_table_alias: 'main',
whereDefaultConditions: [
{
column: 'main.status',
filter_type: FILTER_TYPE.TEXT_IN_MEMBER,
values: [STATUS.SETTLED],
},
{
column: 'main.type',
filter_type: FILTER_TYPE.TEXT_IN_MEMBER,
values: [TransactionType.COUNTER],
},
],
defaultOrderBy: [],
lowLevelOrderBy: [],
filter_period_config: {
hidden: true,
},
column_configs: [
{
column: 'main__settlement_date',
query: 'main.settlement_date',
label: 'Tanggal Transaksi',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.DATE_TIMESTAMP,
date_format: 'DD/MM/YYYY',
},
{
column: 's_period_type__name',
query: 's_period_type.name',
label: 'Tipe Rate',
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__payment_total_profit',
query: 'main.payment_total_profit',
label: 'Total Transaksi',
type: DATA_TYPE.MEASURE,
format: DATA_FORMAT.CURRENCY,
},
{
column: 'main__discount_code',
query: 'main.discount_code',
label: 'Kode Diskon',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__discount_percentage',
query: 'main.discount_percentage',
label: 'Diskon (%)',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__discount_value',
query: 'main.discount_value',
label: 'Diskon (IDR)',
type: DATA_TYPE.MEASURE,
format: DATA_FORMAT.CURRENCY,
},
{
column: 'main__payment_total',
query: 'main.payment_total',
label: 'Total Pembayaran',
type: DATA_TYPE.MEASURE,
format: DATA_FORMAT.CURRENCY,
},
{
column: 'vip__creator_name',
query: 'vip.creator_name',
label: 'Pemberi Diskon',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'privilege__name',
query: 'privilege.name',
label: 'Kategori Pemberi Diskon',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__creator_counter_no',
query: 'main.creator_counter_no',
label: 'No. PoS',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__customer_name',
query: 'main.customer_name',
label: 'Nama Pelanggan',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__customer_phone',
query: 'main.customer_phone',
label: 'Telepon',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__creator_name',
query: 'main.creator_name',
label: 'Kasir',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
],
filter_configs: [
{
filed_label: 'Tanggal Transaksi',
filter_column: 'main__settlement_date',
field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
},
{
filed_label: 'Tipe Rate',
filter_column: 's_period_type__name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Kode Transaksi',
filter_column: 'main__invoice_code',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Kode Diskon',
filter_column: 'main__discount_code',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Pemberi Diskon',
filter_column: 'vip__creator_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'No. Pos',
filter_column: 'main__creator_counter_no',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Nama Pelanggan',
filter_column: 'main__customer_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Kasir',
filter_column: 'main__creator_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
],
};

View File

@ -0,0 +1,299 @@
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}__income_per_item`,
label: 'Pendapatan Per Item',
table_schema: `transactions main
LEFT JOIN transaction_items tr_item ON tr_item.transaction_id::text = main.id::text
LEFT JOIN refunds refund ON refund.transaction_id = main.id
LEFT JOIN items item ON item.id::text = tr_item.item_id::text
LEFT JOIN users tenant ON tenant.id::text = item.tenant_id::text
LEFT JOIN refund_items refund_item ON refund_item.refund_item_id::text = tr_item.item_id::text`,
main_table_alias: 'main',
whereDefaultConditions: [
{
column: 'main.status',
filter_type: FILTER_TYPE.TEXT_IN_MEMBER,
values: [STATUS.SETTLED, STATUS.REFUNDED, STATUS.PROCESS_REFUND],
},
],
defaultOrderBy: [],
lowLevelOrderBy: [],
filter_period_config: {
hidden: true,
},
column_configs: [
{
column: 'main__settlement_date',
query: 'main.settlement_date',
label: 'Tanggal Pendapatan',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.DATE_TIMESTAMP,
date_format: 'DD/MM/YYYY',
},
{
column: 'item_owner',
query: `CASE WHEN tenant.name is not null THEN tenant.name ELSE 'Company' END`,
label: 'Kepemilikan',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__type',
query: 'main.type',
label: 'Sumber',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__invoice_code',
query: 'main.invoice_code',
label: 'Kode Booking',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__payment_code',
query: 'main.payment_code',
label: 'Kode Pembayaran',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'tr_item__item_category_name',
query: 'tr_item.item_category_name',
label: 'Kategori Item',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'tr_item__item_name',
query: 'tr_item.item_name',
label: 'Nama Item',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__customer_type',
query: 'main.customer_type',
label: 'Tipe Pelanggan',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__creator_counter_no',
query: 'main.creator_counter_no',
label: 'No.PoS',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'tr_item__qty',
query: 'tr_item.qty',
label: 'Qty',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.NUMBER,
},
{
column: 'tr_item__total_hpp',
query: 'tr_item.total_hpp',
label: 'Total HPP',
type: DATA_TYPE.MEASURE,
format: DATA_FORMAT.CURRENCY,
},
// TODO => tambahkan total dpp per item
// TODO => tambahkan total tax
{
column: 'tr_item__total_price',
query: 'tr_item.total_price',
label: 'Total Penjualan',
type: DATA_TYPE.MEASURE,
format: DATA_FORMAT.CURRENCY,
},
{
column: 'refund__refund_date',
query: 'refund.refund_date',
label: 'Tanggal Pengembalian',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.DATE_TIMESTAMP,
date_format: 'DD/MM/YYYY',
},
{
column: 'refund__status',
query: 'refund.status',
label: 'Status Pengembalian',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'refund__code',
query: 'refund.code',
label: 'Kode Pengembalian',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'refund_item__qty_refund',
query: 'refund_item.qty_refund',
label: 'Qty Pengembalian',
type: DATA_TYPE.DIMENSION,
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',
label: 'Profile Share (IDR)',
type: DATA_TYPE.MEASURE,
format: DATA_FORMAT.CURRENCY,
},
{
column: 'tenant_income',
query: 'tr_item.total_price - tr_item.item_tenant_share_margin',
label: 'Pendapatan Tenant',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.CURRENCY,
},
{
column: 'main__customer_name',
query: 'main.customer_name',
label: 'Nama Pelanggan',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__customer_description',
query: 'main.customer_description',
label: 'Deskripsi',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__customer_phone',
query: 'main.customer_phone',
label: 'Telepon',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__creator_name',
query: 'main.creator_name',
label: 'Dibuat Oleh',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
],
filter_configs: [
{
filed_label: 'Tanggal Pendapatan',
filter_column: 'main__settlement_date',
field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
},
{
filed_label: 'Kepemilikan',
filter_column: 'item_owner',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
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: 'Kategori Item',
filter_column: 'tr_item__item_category_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Nama Item',
filter_column: 'tr_item__item_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Tipe Pelanggan',
filter_column: 'main__customer_type',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'No. PoS',
filter_column: 'main__creator_counter_no',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Tanggal Pengembalian',
filter_column: 'refund__refund_date',
field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
},
{
filed_label: 'Kode Pengembalian',
filter_column: 'refund__code',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Nama Pelanggan',
filter_column: 'main__customer_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Bank/Issuer',
filter_column: 'main__payment_type_method_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Dibuat Oleh',
filter_column: 'main__creator_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
],
};

View File

@ -243,8 +243,8 @@ export default <ReportConfigEntity>{
format: DATA_FORMAT.TEXT,
},
{
column: 'main__creator_name',
query: 'main.creator_name',
column: 'refund__creator_name',
query: 'refund.creator_name',
label: 'Pengembalian Dibuat Oleh',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
@ -324,5 +324,23 @@ export default <ReportConfigEntity>{
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Penjualan Dibuat Oleh',
filter_column: 'main__creator_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Direkonsiliasi Oleh',
filter_column: 'main__reconciliation_confirm_by',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Pengembalian Dibuat Oleh',
filter_column: 'refund__creator_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
],
};

View File

@ -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 [];
},
};

View File

@ -7,6 +7,7 @@ import {
REPORT_GROUP,
} from '../../../constant';
import { ReportConfigEntity } from '../../../entities/report-config.entity';
import { RefundType } from 'src/modules/transaction/refund/constants';
export default <ReportConfigEntity>{
group_name: REPORT_GROUP.transaction_report,
@ -29,6 +30,13 @@ export default <ReportConfigEntity>{
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.STATUS,
},
{
column: 'main__type',
query: 'main.type',
label: 'Tipe Refund',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__code',
query: 'main.code',
@ -53,15 +61,8 @@ export default <ReportConfigEntity>{
date_format: 'DD/MM/YYYY',
},
{
column: 'main__type',
query: 'main.type',
label: 'Tipe Refund',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'tr__invoice_code',
query: 'tr.invoice_code',
column: 'tr__payment_code',
query: 'tr.payment_code',
label: 'Kode Settlement',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
@ -89,16 +90,30 @@ export default <ReportConfigEntity>{
format: DATA_FORMAT.CURRENCY,
},
{
column: 'tr__payment_type',
query: 'tr.payment_type',
label: 'Tipe Pembayaran',
column: 'main__bank_name',
query: 'main.bank_name',
label: 'Bank Tujuan',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'tr__payment_type_method_name',
query: 'tr.payment_type_method_name',
label: 'Bank',
column: 'main__bank_account_number',
query: 'main.bank_account_number',
label: 'No. Rek. Tujuan',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'main__bank_account_name',
query: 'main.bank_account_name',
label: 'Atas Nama',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
{
column: 'tr__payment_type',
query: 'tr.payment_type',
label: 'Tipe Pembayaran',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT,
},
@ -152,5 +167,90 @@ export default <ReportConfigEntity>{
STATUS.REJECTED,
],
},
{
filed_label: 'Tipe Refund',
filter_column: 'main__type',
field_type: FILTER_FIELD_TYPE.select,
filter_type: FILTER_TYPE.TEXT_IN_MEMBER,
select_custom_options: [...Object.values(RefundType)],
},
{
filed_label: 'Kode',
filter_column: 'main__code',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Tgl. Permintaan',
filter_column: 'main__request_date',
field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
},
{
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,
},
{
filed_label: 'Kode Settlement',
filter_column: 'tr__payment_code',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Tgl. Settlement',
filter_column: 'tr__settlement_date',
field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
},
{
filed_label: 'Bank Tujuan',
filter_column: 'main__bank_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'No. Rek. Tujuan',
filter_column: 'main__bank_account_number',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Atas Nama',
filter_column: 'main__bank_account_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Tipe Pembayaran',
filter_column: 'tr__payment_type',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Kontak',
filter_column: 'tr__customer_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Telepon',
filter_column: 'tr__customer_phone',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Dibuat Oleh',
filter_column: 'main__creator_name',
field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
},
{
filed_label: 'Tgl. Update',
filter_column: 'main__updated_at',
field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_EPOCH,
},
],
};

View File

@ -1,40 +0,0 @@
import { DATA_FORMAT, DATA_TYPE, REPORT_GROUP } from '../../../constant';
import { ReportConfigEntity } from '../../../entities/report-config.entity';
export default <ReportConfigEntity>{
group_name: REPORT_GROUP.transaction_report,
unique_name: `${REPORT_GROUP.transaction_report}__revenue_per_item`,
label: 'Pendapatan per Item',
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: [],
};

View File

@ -1,40 +0,0 @@
import { DATA_FORMAT, DATA_TYPE, REPORT_GROUP } from '../../../constant';
import { ReportConfigEntity } from '../../../entities/report-config.entity';
export default <ReportConfigEntity>{
group_name: REPORT_GROUP.transaction_report,
unique_name: `${REPORT_GROUP.transaction_report}__sales_qty_per_item`,
label: 'Qty Penjualan per Item',
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: [],
};

View File

@ -1,23 +1,25 @@
import { ReportConfigEntity } from '../../entities/report-config.entity';
import IncomeReport from './configs/income';
import RevenuePerItemReport from './configs/revenue-per-item';
import SalesQtyPerItemReport from './configs/sales-qty-per-item';
import IncomeReportPerItem from './configs/income-per-item';
import GivingDiscount from './configs/giving-discounts';
import VisitorsPerRideReport from './configs/visitors-per-ride';
import TimePerRideReport from './configs/time-per-ride';
import BookingReport from './configs/booking';
import RefundsReport from './configs/refunds';
import CashierLogReport from './configs/cashier-log';
import CashWithdrawalsReport from './configs/cash-withdrawals';
import ReconciliationReport from './configs/reconciliation';
export const TransactionReportConfig: ReportConfigEntity[] = [
IncomeReport,
// RevenuePerItemReport,
// SalesQtyPerItemReport,
IncomeReportPerItem,
GivingDiscount,
// VisitorsPerRideReport,
// TimePerRideReport,
// BookingReport,
// RefundsReport,
// CashierLogReport,
// CashWithdrawalsReport,
BookingReport,
RefundsReport,
CashierLogReport,
CashWithdrawalsReport,
ReconciliationReport,
];