feat(SPG-966): fix report income

pull/95/head
Firman Ramdhani 2024-09-19 17:49:35 +07:00
parent 09d6dbaab2
commit 7d9f619858
6 changed files with 141 additions and 102 deletions

View File

@ -7,17 +7,4 @@ export default <ReportConfigEntity>{
group_name: REPORT_GROUP.tenant_report, group_name: REPORT_GROUP.tenant_report,
unique_name: `${REPORT_GROUP.tenant_report}__income_per_item_master`, unique_name: `${REPORT_GROUP.tenant_report}__income_per_item_master`,
label: 'Pendapatan', 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;
},
}; };

View File

@ -27,6 +27,11 @@ export default <ReportConfigEntity>{
filter_type: FILTER_TYPE.TEXT_IN_MEMBER, filter_type: FILTER_TYPE.TEXT_IN_MEMBER,
values: [STATUS.SETTLED, STATUS.REFUNDED, STATUS.PROCESS_REFUND], values: [STATUS.SETTLED, STATUS.REFUNDED, STATUS.PROCESS_REFUND],
}, },
{
column: 'main.is_recap_transaction',
filter_type: FILTER_TYPE.TEXT_EQUAL,
values: [false],
},
], ],
defaultOrderBy: [], defaultOrderBy: [],
lowLevelOrderBy: [], lowLevelOrderBy: [],
@ -36,12 +41,18 @@ export default <ReportConfigEntity>{
column_configs: [ column_configs: [
{ {
column: 'main__settlement_date', column: 'main__payment_date',
query: 'main.settlement_date', query: `to_char(main.payment_date, 'DD-MM-YYYY')`,
label: 'Tgl. Pendapatan', label: 'Tgl. Pendapatan',
type: DATA_TYPE.DIMENSION, type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.DATE_TIMESTAMP, format: DATA_FORMAT.TEXT,
date_format: 'DD/MM/YYYY', },
{
column: 'main__status',
query: 'main.status',
label: 'Status',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.STATUS,
}, },
{ {
column: 'item_owner', column: 'item_owner',
@ -79,26 +90,27 @@ export default <ReportConfigEntity>{
format: DATA_FORMAT.TEXT, format: DATA_FORMAT.TEXT,
}, },
{ {
column: 'tr_item__item_name', column: 'tr_item__item_type',
query: 'tr_item.item_name', query: 'tr_item.item_type',
label: 'Nama Item', label: 'Tipe Item',
type: DATA_TYPE.DIMENSION, type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT, 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', 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', label: 'Nama Item Bundling',
type: DATA_TYPE.DIMENSION, type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT, 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', column: 'main__customer_type',
query: 'main.customer_type', query: 'main.customer_type',
@ -113,6 +125,13 @@ export default <ReportConfigEntity>{
type: DATA_TYPE.DIMENSION, type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT, 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', column: 'tr_item__qty',
query: 'tr_item.qty', query: 'tr_item.qty',
@ -164,11 +183,10 @@ export default <ReportConfigEntity>{
}, },
{ {
column: 'refund__refund_date', column: 'refund__refund_date',
query: 'refund.refund_date', query: `to_char(refund.refund_date, 'DD-MM-YYYY')`,
label: 'Tgl. Pengembalian', label: 'Tgl. Pengembalian',
type: DATA_TYPE.DIMENSION, type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.DATE_TIMESTAMP, format: DATA_FORMAT.TEXT,
date_format: 'DD/MM/YYYY',
}, },
{ {
column: 'refund__status', column: 'refund__status',
@ -191,21 +209,6 @@ export default <ReportConfigEntity>{
type: DATA_TYPE.MEASURE, type: DATA_TYPE.MEASURE,
format: DATA_FORMAT.NUMBER, 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', column: 'tr_item__item_tenant_share_margin',
query: 'tr_item.item_tenant_share_margin', query: 'tr_item.item_tenant_share_margin',
@ -266,9 +269,10 @@ export default <ReportConfigEntity>{
filter_configs: [ filter_configs: [
{ {
filed_label: 'Tgl. Pendapatan', filed_label: 'Tgl. Pendapatan',
filter_column: 'main__settlement_date', filter_column: 'main__payment_date',
field_type: FILTER_FIELD_TYPE.date_range_picker, field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
date_format: 'DD-MM-YYYY',
}, },
{ {
filed_label: 'Kepemilikan', filed_label: 'Kepemilikan',
@ -308,11 +312,10 @@ export default <ReportConfigEntity>{
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
}, },
{ {
filed_label: 'Breakdown Item', filed_label: 'Tipe Item',
filter_column: 'tr_item__breakdown_bundling', filter_column: 'tr_item__item_type',
field_type: FILTER_FIELD_TYPE.select, field_type: FILTER_FIELD_TYPE.input_tag,
filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS,
select_custom_options: ['Yes', 'No'],
}, },
{ {
filed_label: 'Nama Item Bundling', filed_label: 'Nama Item Bundling',
@ -332,11 +335,18 @@ export default <ReportConfigEntity>{
field_type: FILTER_FIELD_TYPE.input_number, field_type: FILTER_FIELD_TYPE.input_number,
filter_type: FILTER_TYPE.NUMBER_EQUAL, 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', filed_label: 'Tgl. Pengembalian',
filter_column: 'refund__refund_date', filter_column: 'refund__refund_date',
field_type: FILTER_FIELD_TYPE.date_range_picker, field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
date_format: 'DD-MM-YYYY',
}, },
{ {
filed_label: 'Kode Pengembalian', filed_label: 'Kode Pengembalian',

View File

@ -26,6 +26,11 @@ export default <ReportConfigEntity>{
filter_type: FILTER_TYPE.TEXT_IN_MEMBER, filter_type: FILTER_TYPE.TEXT_IN_MEMBER,
values: [STATUS.SETTLED, STATUS.REFUNDED, STATUS.PROCESS_REFUND], values: [STATUS.SETTLED, STATUS.REFUNDED, STATUS.PROCESS_REFUND],
}, },
{
column: 'main.is_recap_transaction',
filter_type: FILTER_TYPE.TEXT_EQUAL,
values: [false],
},
], ],
defaultOrderBy: [], defaultOrderBy: [],
lowLevelOrderBy: [], lowLevelOrderBy: [],
@ -35,12 +40,18 @@ export default <ReportConfigEntity>{
column_configs: [ column_configs: [
{ {
column: 'main__settlement_date', column: 'main__payment_date',
query: 'main.settlement_date', query: `to_char(main.payment_date, 'DD-MM-YYYY')`,
label: 'Tgl. Pendapatan', label: 'Tgl. Pendapatan',
type: DATA_TYPE.DIMENSION, type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.DATE_TIMESTAMP, format: DATA_FORMAT.TEXT,
date_format: 'DD/MM/YYYY', },
{
column: 'main__status',
query: 'main.status',
label: 'Status',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.STATUS,
}, },
{ {
column: 'item_owner', column: 'item_owner',
@ -98,6 +109,13 @@ export default <ReportConfigEntity>{
type: DATA_TYPE.DIMENSION, type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT, 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', column: 'tr_item__qty',
query: 'tr_item.qty', query: 'tr_item.qty',
@ -149,11 +167,10 @@ export default <ReportConfigEntity>{
}, },
{ {
column: 'refund__refund_date', column: 'refund__refund_date',
query: 'refund.refund_date', query: `to_char(refund.refund_date, 'DD-MM-YYYY')`,
label: 'Tgl. Pengembalian', label: 'Tgl. Pengembalian',
type: DATA_TYPE.DIMENSION, type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.DATE_TIMESTAMP, format: DATA_FORMAT.TEXT,
date_format: 'DD/MM/YYYY',
}, },
{ {
column: 'refund__status', column: 'refund__status',
@ -176,21 +193,6 @@ export default <ReportConfigEntity>{
type: DATA_TYPE.MEASURE, type: DATA_TYPE.MEASURE,
format: DATA_FORMAT.NUMBER, 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', column: 'tr_item__item_tenant_share_margin',
query: 'tr_item.item_tenant_share_margin', query: 'tr_item.item_tenant_share_margin',
@ -238,9 +240,10 @@ export default <ReportConfigEntity>{
filter_configs: [ filter_configs: [
{ {
filed_label: 'Tgl. Pendapatan', filed_label: 'Tgl. Pendapatan',
filter_column: 'main__settlement_date', filter_column: 'main__payment_date',
field_type: FILTER_FIELD_TYPE.date_range_picker, field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
date_format: 'DD-MM-YYYY',
}, },
{ {
filed_label: 'Kepemilikan', filed_label: 'Kepemilikan',
@ -291,11 +294,18 @@ export default <ReportConfigEntity>{
field_type: FILTER_FIELD_TYPE.input_number, field_type: FILTER_FIELD_TYPE.input_number,
filter_type: FILTER_TYPE.NUMBER_EQUAL, 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', filed_label: 'Tgl. Pengembalian',
filter_column: 'refund__refund_date', filter_column: 'refund__refund_date',
field_type: FILTER_FIELD_TYPE.date_range_picker, field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
date_format: 'DD-MM-YYYY',
}, },
{ {
filed_label: 'Kode Pengembalian', filed_label: 'Kode Pengembalian',

View File

@ -29,6 +29,11 @@ export default <ReportConfigEntity>{
filter_type: FILTER_TYPE.TEXT_IN_MEMBER, filter_type: FILTER_TYPE.TEXT_IN_MEMBER,
values: [STATUS.SETTLED, STATUS.REFUNDED, STATUS.PROCESS_REFUND], values: [STATUS.SETTLED, STATUS.REFUNDED, STATUS.PROCESS_REFUND],
}, },
{
column: 'main.is_recap_transaction',
filter_type: FILTER_TYPE.TEXT_EQUAL,
values: [false],
},
], ],
defaultOrderBy: [], defaultOrderBy: [],
lowLevelOrderBy: [], lowLevelOrderBy: [],
@ -38,12 +43,18 @@ export default <ReportConfigEntity>{
column_configs: [ column_configs: [
{ {
column: 'main__settlement_date', column: 'main__payment_date',
query: 'main.settlement_date', query: `to_char(main.payment_date, 'DD-MM-YYYY')`,
label: 'Tgl. Pendapatan', label: 'Tgl. Pendapatan',
type: DATA_TYPE.DIMENSION, type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.DATE_TIMESTAMP, format: DATA_FORMAT.TEXT,
date_format: 'DD/MM/YYYY', },
{
column: 'main__status',
query: 'main.status',
label: 'Status',
type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.STATUS,
}, },
{ {
column: 'main__type', column: 'main__type',
@ -88,12 +99,19 @@ export default <ReportConfigEntity>{
format: DATA_FORMAT.TEXT, format: DATA_FORMAT.TEXT,
}, },
{ {
column: 'main__no_of_group', column: 'main__creator_counter_name',
query: 'main.no_of_group', query: 'main.creator_counter_name',
label: '#Visitor', label: 'Nama PoS',
type: DATA_TYPE.DIMENSION, type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT, 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', column: 'item__total_hpp_item',
query: 'item.total_hpp_item', query: 'item.total_hpp_item',
@ -152,11 +170,10 @@ export default <ReportConfigEntity>{
}, },
{ {
column: 'refund__refund_date', column: 'refund__refund_date',
query: 'refund.refund_date', query: `to_char(refund.refund_date, 'DD-MM-YYYY')`,
label: 'Tgl. Pengembalian', label: 'Tgl. Pengembalian',
type: DATA_TYPE.MEASURE, type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.DATE_TIMESTAMP, format: DATA_FORMAT.TEXT,
date_format: 'DD/MM/YYYY',
}, },
{ {
column: 'refund__status', column: 'refund__status',
@ -172,20 +189,20 @@ export default <ReportConfigEntity>{
type: DATA_TYPE.DIMENSION, type: DATA_TYPE.DIMENSION,
format: DATA_FORMAT.TEXT, format: DATA_FORMAT.TEXT,
}, },
{ // {
column: 'refund__refund_total', // column: 'refund__refund_total',
query: '(refund.refund_total * -1)', // query: '(refund.refund_total * -1)',
label: 'Total Pengembalian', // label: 'Total Pengembalian',
type: DATA_TYPE.MEASURE, // type: DATA_TYPE.MEASURE,
format: DATA_FORMAT.CURRENCY, // format: DATA_FORMAT.CURRENCY,
}, // },
{ // {
column: 'transaction_balance', // column: 'transaction_balance',
query: `CASE WHEN refund.id is null THEN main.payment_total ELSE main.payment_total - refund.refund_total END`, // query: `CASE WHEN refund.id is null THEN main.payment_total ELSE main.payment_total - refund.refund_total END`,
label: 'Balance', // label: 'Balance',
type: DATA_TYPE.MEASURE, // type: DATA_TYPE.MEASURE,
format: DATA_FORMAT.CURRENCY, // format: DATA_FORMAT.CURRENCY,
}, // },
{ {
column: 'main__discount_code', column: 'main__discount_code',
query: 'main.discount_code', query: 'main.discount_code',
@ -260,10 +277,12 @@ export default <ReportConfigEntity>{
filter_configs: [ filter_configs: [
{ {
filed_label: 'Tgl. Pendapatan', filed_label: 'Tgl. Pendapatan',
filter_column: 'main__settlement_date', filter_column: 'main__payment_date',
field_type: FILTER_FIELD_TYPE.date_range_picker, field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
date_format: 'DD-MM-YYYY',
}, },
{ {
filed_label: 'Sumber', filed_label: 'Sumber',
filter_column: 'main__type', filter_column: 'main__type',
@ -301,11 +320,18 @@ export default <ReportConfigEntity>{
field_type: FILTER_FIELD_TYPE.input_number, field_type: FILTER_FIELD_TYPE.input_number,
filter_type: FILTER_TYPE.NUMBER_EQUAL, 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', filed_label: 'Tgl. Pengembalian',
filter_column: 'refund__refund_date', filter_column: 'refund__refund_date',
field_type: FILTER_FIELD_TYPE.date_range_picker, field_type: FILTER_FIELD_TYPE.date_range_picker,
filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP,
date_format: 'DD-MM-YYYY',
}, },
{ {
filed_label: 'Kode Pengembalian', filed_label: 'Kode Pengembalian',

View File

@ -12,7 +12,7 @@ export interface ReportColumnConfigEntity {
export interface FilterConfigEntity { export interface FilterConfigEntity {
filter_column: string; filter_column: string;
filter_type: FILTER_TYPE; filter_type: FILTER_TYPE;
date_format?: string;
filed_label: string; filed_label: string;
field_type: string; field_type: string;
hide_field?: boolean; hide_field?: boolean;

View File

@ -331,7 +331,11 @@ export class ReportQueryBuilder {
groupKeys.forEach(function (key, index) { groupKeys.forEach(function (key, index) {
const colName = rowGroupCols[index].field; const colName = rowGroupCols[index].field;
// whereParts.push(colName + ' = "' + key + '"'); // 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( const tableWhereConditions = [...whereCondition, ...whereParts].filter(
Boolean, Boolean,
); );
const defaultWhereConditions = defaultWhereOptions.filter(Boolean); const defaultWhereConditions = defaultWhereOptions.filter(Boolean);
if (tableWhereConditions.length > 0) { if (tableWhereConditions.length > 0) {