feat: fix report bug and create report tax
continuous-integration/drone/push Build is passing Details

pull/95/head
Firman Ramdhani 2024-09-20 11:32:48 +07:00
parent 3fd97b8879
commit aaa0ca6f76
10 changed files with 210 additions and 60 deletions

View File

@ -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;

View File

@ -39,17 +39,16 @@ export default <ReportConfigEntity>{
},
{
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 <ReportConfigEntity>{
{
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 <ReportConfigEntity>{
},
{
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 <ReportConfigEntity>{
},
{
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 <ReportConfigEntity>{
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 <ReportConfigEntity>{
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 <ReportConfigEntity>{
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 <ReportConfigEntity>{
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',

View File

@ -29,11 +29,10 @@ export default <ReportConfigEntity>{
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 <ReportConfigEntity>{
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 <ReportConfigEntity>{
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',

View File

@ -29,11 +29,10 @@ export default <ReportConfigEntity>{
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 <ReportConfigEntity>{
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',

View File

@ -45,12 +45,11 @@ export default <ReportConfigEntity>{
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 <ReportConfigEntity>{
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 <ReportConfigEntity>{
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 <ReportConfigEntity>{
],
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',

View File

@ -38,27 +38,24 @@ export default <ReportConfigEntity>{
},
{
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 <ReportConfigEntity>{
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',

View File

@ -46,19 +46,17 @@ export default <ReportConfigEntity>{
},
{
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 <ReportConfigEntity>{
},
{
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 <ReportConfigEntity>{
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 <ReportConfigEntity>{
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',

View File

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

View File

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

View File

@ -46,7 +46,7 @@ export interface ReportConfigEntity {
whereDefaultConditions?: {
column: string;
filter_type: FILTER_TYPE;
values: string[];
values: string[] | boolean[] | number[];
}[];
defaultOrderBy?: string[];
lowLevelOrderBy?: string[];