feat(SPG-268): report pemberian diskon

pull/63/head
Firman Ramdhani 2024-08-09 15:43:13 +07:00
parent a319b64abe
commit bc8476a56e
3 changed files with 199 additions and 5 deletions

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

@ -2,6 +2,7 @@ import { ReportConfigEntity } from '../../entities/report-config.entity';
import IncomeReport from './configs/income'; import IncomeReport from './configs/income';
import IncomeReportPerItem from './configs/income-per-item'; import IncomeReportPerItem from './configs/income-per-item';
import GivingDiscount from './configs/giving-discounts';
import RevenuePerItemReport from './configs/revenue-per-item'; import RevenuePerItemReport from './configs/revenue-per-item';
import SalesQtyPerItemReport from './configs/sales-qty-per-item'; import SalesQtyPerItemReport from './configs/sales-qty-per-item';
import VisitorsPerRideReport from './configs/visitors-per-ride'; import VisitorsPerRideReport from './configs/visitors-per-ride';
@ -14,6 +15,7 @@ import CashWithdrawalsReport from './configs/cash-withdrawals';
export const TransactionReportConfig: ReportConfigEntity[] = [ export const TransactionReportConfig: ReportConfigEntity[] = [
IncomeReport, IncomeReport,
IncomeReportPerItem, IncomeReportPerItem,
GivingDiscount,
// RevenuePerItemReport, // RevenuePerItemReport,
// SalesQtyPerItemReport, // SalesQtyPerItemReport,
// VisitorsPerRideReport, // VisitorsPerRideReport,