diff --git a/package.json b/package.json
index e7b01441..8d10b018 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "iSunFA",
- "version": "0.8.2+23",
+ "version": "0.8.2+24",
"private": false,
"scripts": {
"dev": "next dev",
diff --git a/src/components/accounting_title_page_body/accounting_title_page_body.tsx b/src/components/accounting_title_page_body/accounting_title_page_body.tsx
index d0264c88..2f9079ab 100644
--- a/src/components/accounting_title_page_body/accounting_title_page_body.tsx
+++ b/src/components/accounting_title_page_body/accounting_title_page_body.tsx
@@ -194,7 +194,7 @@ const AccountingTitlePageBody = () => {
{/* Info: (20240717 - Julian) Assets */}
-
{t('common:COMMON.ASSETS')}
+
{t('common:COMMON.ASSET')}
{
- {t('common:COMMON.ASSETS')}
+ {t('common:COMMON.ASSET')}
- {t('common:COMMON.ASSETS')}
+ {t('common:COMMON.ASSET')}
value === 0);
const isNoDataForPreALR = preAssetLiabilityRatio.every((value) => value === 0);
+ // Info: (20241001 - Anna) 管理表格摺疊狀態
+ const [isSummaryCollapsed, setIsSummaryCollapsed] = useState(false);
+ const [isDetailCollapsed, setIsDetailCollapsed] = useState(false);
+ // Info: (20241001 - Anna) 切換摺疊狀態
+ const toggleSummaryTable = () => {
+ setIsSummaryCollapsed(!isSummaryCollapsed);
+ };
+
+ const toggleDetailTable = () => {
+ setIsDetailCollapsed(!isDetailCollapsed);
+ };
+
useEffect(() => {
if (getReportFinancialSuccess === true && reportFinancial && reportFinancial?.otherInfo) {
const currentDateString = timestampToString(reportFinancial.curDate.to ?? 0);
@@ -626,39 +639,44 @@ const BalanceSheetReportBodyAll = ({ reportId }: IBalanceSheetReportBodyAllProps
-
-
-
-
- 代號
- |
-
- 會計項目
- |
-
- {curDate}
- |
-
- %
- |
-
- {preDate}
- |
-
- %
- |
-
-
-
- {reportFinancial &&
- reportFinancial.general &&
- Object.prototype.hasOwnProperty.call(reportFinancial, 'general') &&
- rowsForPage1(reportFinancial.general)}
-
-
+ {!isSummaryCollapsed && (
+
+
+
+
+ 代號
+ |
+
+ 會計項目
+ |
+
+ {curDate}
+ |
+
+ %
+ |
+
+ {preDate}
+ |
+
+ %
+ |
+
+
+
+ {reportFinancial &&
+ reportFinancial.general &&
+ Object.prototype.hasOwnProperty.call(reportFinancial, 'general') &&
+ rowsForPage1(reportFinancial.general)}
+
+
+ )}
{renderedFooter(1)}
@@ -727,39 +745,44 @@ const BalanceSheetReportBodyAll = ({ reportId }: IBalanceSheetReportBodyAllProps
-
-
-
-
- 代號
- |
-
- 會計項目
- |
-
- {curDate}
- |
-
- %
- |
-
- {preDate}
- |
-
- %
- |
-
-
-
- {reportFinancial &&
- reportFinancial.details &&
- Object.prototype.hasOwnProperty.call(reportFinancial, 'details') &&
- rowsForPage2part1(reportFinancial.details)}
-
-
+ {!isDetailCollapsed && (
+
+
+
+
+ 代號
+ |
+
+ 會計項目
+ |
+
+ {curDate}
+ |
+
+ %
+ |
+
+ {preDate}
+ |
+
+ %
+ |
+
+
+
+ {reportFinancial &&
+ reportFinancial.details &&
+ Object.prototype.hasOwnProperty.call(reportFinancial, 'details') &&
+ rowsForPage2part1(reportFinancial.details)}
+
+
+ )}
{renderedFooter(2)}
diff --git a/src/components/button/collapse_button.tsx b/src/components/button/collapse_button.tsx
new file mode 100644
index 00000000..b69e6a53
--- /dev/null
+++ b/src/components/button/collapse_button.tsx
@@ -0,0 +1,25 @@
+import React from 'react';
+import { BsChevronDown, BsChevronUp } from 'react-icons/bs';
+
+// Info: (20241001 - Anna) 定義 CollapseButton 的 props 類型
+interface CollapseButtonProps {
+ onClick: () => void;
+ isCollapsed: boolean;
+}
+
+const CollapseButton: React.FC = ({ onClick, isCollapsed }) => {
+ return (
+
+
+
+ );
+};
+
+export default CollapseButton;
diff --git a/src/components/cash_flow_statement_report_body/cash_flow_statement_report_body_all.tsx b/src/components/cash_flow_statement_report_body/cash_flow_statement_report_body_all.tsx
index 18e9708f..972da918 100644
--- a/src/components/cash_flow_statement_report_body/cash_flow_statement_report_body_all.tsx
+++ b/src/components/cash_flow_statement_report_body/cash_flow_statement_report_body_all.tsx
@@ -2,7 +2,7 @@ import { APIName } from '@/constants/api_connection';
import { useUserCtx } from '@/contexts/user_context';
import { CashFlowStatementReport, FinancialReportItem } from '@/interfaces/report';
import APIHandler from '@/lib/utils/api_handler';
-import React, { useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
import 'bootstrap/dist/css/bootstrap.min.css';
import 'bootstrap-icons/font/bootstrap-icons.css';
import LineChart from '@/components/cash_flow_statement_report_body/line_chart';
@@ -13,6 +13,7 @@ import { SkeletonList } from '@/components/skeleton/skeleton';
import { DEFAULT_SKELETON_COUNT_FOR_PAGE } from '@/constants/display';
import useStateRef from 'react-usestateref';
import { timestampToString } from '@/lib/utils/common';
+import CollapseButton from '@/components/button/collapse_button';
interface ICashFlowStatementReportBodyAllProps {
reportId: string;
@@ -53,6 +54,17 @@ const CashFlowStatementReportBodyAll = ({ reportId }: ICashFlowStatementReportBo
const [firstThought, setFirstThought] = useStateRef('');
const [secondThought, setSecondThought] = useStateRef('');
const [thirdThought, setThirdThought] = useStateRef('');
+ // Info: (20241001 - Anna) 管理表格摺疊狀態
+ const [isSummaryCollapsed, setIsSummaryCollapsed] = useState(false);
+ const [isDetailCollapsed, setIsDetailCollapsed] = useState(false);
+ // Info: (20241001 - Anna) 切換摺疊狀態
+ const toggleSummaryTable = () => {
+ setIsSummaryCollapsed(!isSummaryCollapsed);
+ };
+
+ const toggleDetailTable = () => {
+ setIsDetailCollapsed(!isDetailCollapsed);
+ };
useEffect(() => {
if (getReportFinancialSuccess === true && reportFinancial) {
@@ -320,10 +332,16 @@ const CashFlowStatementReportBodyAll = ({ reportId }: ICashFlowStatementReportBo
- {reportFinancial && reportFinancial.general && renderTable(reportFinancial.general, 0, 10)}
+ {!isSummaryCollapsed &&
+ reportFinancial &&
+ reportFinancial.general &&
+ renderTable(reportFinancial.general, 0, 10)}
{renderedFooter(1)}
@@ -359,10 +377,16 @@ const CashFlowStatementReportBodyAll = ({ reportId }: ICashFlowStatementReportBo
- {reportFinancial && reportFinancial.details && renderTable(reportFinancial.details, 0, 3)}
+ {!isDetailCollapsed &&
+ reportFinancial &&
+ reportFinancial.details &&
+ renderTable(reportFinancial.details, 0, 3)}
{
const { isAuthLoading, selectedCompany } = useUserCtx();
+ // Info: (20241001 - Anna) 管理表格摺疊狀態
+ const [isSummaryCollapsed, setIsSummaryCollapsed] = useState(false);
+ const [isDetailCollapsed, setIsDetailCollapsed] = useState(false);
+ // Info: (20241001 - Anna) 切換摺疊狀態
+ const toggleSummaryTable = () => {
+ setIsSummaryCollapsed(!isSummaryCollapsed);
+ };
+
+ const toggleDetailTable = () => {
+ setIsDetailCollapsed(!isDetailCollapsed);
+ };
const hasCompanyId = isAuthLoading === false && !!selectedCompany?.id;
const {
data: reportFinancial,
@@ -124,73 +136,78 @@ const IncomeStatementReportBodyAll = ({ reportId }: IIncomeStatementReportBodyAl
-
一、項目彙總格式
+
單位:新台幣元 每股盈餘單位:新台幣元
-
-
-
-
- 代號
- |
-
- 會計項目
- |
-
- {reportFinancial && reportFinancial.company && (
-
- {formattedCurFromDate}至{formattedCurToDate}
-
- )}
- |
-
- %
- |
-
- {reportFinancial && reportFinancial.company && (
-
- {formattedPreFromDate}至{formattedPreToDate}
-
- )}
- |
-
- %
- |
-
-
-
- {reportFinancial &&
- reportFinancial.general &&
- reportFinancial.general.slice(0, 10).map((value) => (
-
-
- {value.code}
- |
-
- {value.name}
- |
-
- {value.curPeriodAmount}
- |
-
- {value.curPeriodPercentage}
- |
-
- {value.prePeriodAmount}
- |
-
- {value.prePeriodPercentage}
- |
-
- ))}
-
-
+ {!isSummaryCollapsed && (
+
+
+
+
+ 代號
+ |
+
+ 會計項目
+ |
+
+ {!isSummaryCollapsed && reportFinancial && reportFinancial.company && (
+
+ {formattedCurFromDate}至{formattedCurToDate}
+
+ )}
+ |
+
+ %
+ |
+
+ {reportFinancial && reportFinancial.company && (
+
+ {formattedPreFromDate}至{formattedPreToDate}
+
+ )}
+ |
+
+ %
+ |
+
+
+
+ {reportFinancial &&
+ reportFinancial.general &&
+ reportFinancial.general.slice(0, 10).map((value) => (
+
+
+ {value.code}
+ |
+
+ {value.name}
+ |
+
+ {value.curPeriodAmount}
+ |
+
+ {value.curPeriodPercentage}
+ |
+
+ {value.prePeriodAmount}
+ |
+
+ {value.prePeriodPercentage}
+ |
+
+ ))}
+
+
+ )}
{renderedFooter(1)}
@@ -451,73 +468,78 @@ const IncomeStatementReportBodyAll = ({ reportId }: IIncomeStatementReportBodyAl
-
二、細項分類格式
+
單位:新台幣元 每股盈餘單位:新台幣元
-
-
-
-
- 代號
- |
-
- 會計項目
- |
-
- {reportFinancial && reportFinancial.company && (
-
- {formattedCurFromDate}至{formattedCurToDate}
-
- )}
- |
-
- %
- |
-
- {reportFinancial && reportFinancial.company && (
-
- {formattedPreFromDate}至{formattedPreToDate}
-
- )}
- |
-
- %
- |
-
-
-
- {reportFinancial &&
- reportFinancial.details &&
- reportFinancial.details.slice(0, 15).map((value) => (
-
-
- {value.code}
- |
-
- {value.name}
- |
-
- {value.curPeriodAmount}
- |
-
- {value.curPeriodPercentage}
- |
-
- {value.prePeriodAmount}
- |
-
- {value.prePeriodPercentage}
- |
-
- ))}
-
-
+ {!isDetailCollapsed && (
+
+
+
+
+ 代號
+ |
+
+ 會計項目
+ |
+
+ {!isDetailCollapsed && reportFinancial && reportFinancial.company && (
+
+ {formattedCurFromDate}至{formattedCurToDate}
+
+ )}
+ |
+
+ %
+ |
+
+ {reportFinancial && reportFinancial.company && (
+
+ {formattedPreFromDate}至{formattedPreToDate}
+
+ )}
+ |
+
+ %
+ |
+
+
+
+ {reportFinancial &&
+ reportFinancial.details &&
+ reportFinancial.details.slice(0, 15).map((value) => (
+
+
+ {value.code}
+ |
+
+ {value.name}
+ |
+
+ {value.curPeriodAmount}
+ |
+
+ {value.curPeriodPercentage}
+ |
+
+ {value.prePeriodAmount}
+ |
+
+ {value.prePeriodPercentage}
+ |
+
+ ))}
+
+
+ )}
{renderedFooter(4)}
diff --git a/src/locales/cn/setting.json b/src/locales/cn/setting.json
index 9d830ac3..d2ab61ba 100644
--- a/src/locales/cn/setting.json
+++ b/src/locales/cn/setting.json
@@ -40,6 +40,9 @@
"SUCCESSFULLY_UPDATED_ACCOUNT": "会计科目更新成功",
"FAILED_TO_UPDATE_ACCOUNT": "更新科目失败,请稍后重试。",
"FAILED_TO_GET_ACCOUNT_DATA": "取得科目资料失败,请稍后重试。",
- "FAIL_UPDATE_COMPANY_NAME": "无法更新公司名称。错误代码:{{updateTeamCode}}"
+ "FAIL_UPDATE_COMPANY_NAME": "无法更新公司名称。错误代码:{{updateTeamCode}}",
+ "ASSET": "资产",
+ "OTHERCOMPREHENSIVEINCOME": "其他综合損益",
+ "COST": "成本"
}
}
diff --git a/src/locales/en/setting.json b/src/locales/en/setting.json
index cbdfdd6f..0b129b97 100644
--- a/src/locales/en/setting.json
+++ b/src/locales/en/setting.json
@@ -8,6 +8,7 @@
"ADMINISTRATOR": "Administrator",
"SUBSCRIPTION_BILLS": "Subscription&Bills",
"ACCOUNTING_TITLE_MANAGEMENT": "Accounting Title Management",
+ "ASSETS": "資產",
"LIABILITY": "Liability",
"EQUITY": "Equity",
"ALL": "All",
@@ -40,6 +41,8 @@
"SUCCESSFULLY_UPDATED_ACCOUNT": "Successfully updated account: ",
"FAILED_TO_UPDATE_ACCOUNT": "Failed to update account, please try again later.",
"FAILED_TO_GET_ACCOUNT_DATA": "Failed to get account data, please try again later.",
- "FAIL_UPDATE_COMPANY_NAME": "Fail to update company name. Code:{{updateTeamCode}}"
+ "FAIL_UPDATE_COMPANY_NAME": "Fail to update company name. Code:{{updateTeamCode}}",
+ "OTHERCOMPREHENSIVEINCOME": "Other Comprehensive Income",
+ "COST": "Cost"
}
}
diff --git a/src/locales/tw/setting.json b/src/locales/tw/setting.json
index 4e76fe63..5ba83b49 100644
--- a/src/locales/tw/setting.json
+++ b/src/locales/tw/setting.json
@@ -40,6 +40,9 @@
"SUCCESSFULLY_UPDATED_ACCOUNT": "會計科目更新成功:",
"FAILED_TO_UPDATE_ACCOUNT": "更新科目失敗,請稍後重試。",
"FAILED_TO_GET_ACCOUNT_DATA": "取得科目資料失敗,請稍後重試。",
- "FAIL_UPDATE_COMPANY_NAME": "無法更新公司名稱。錯誤代碼:{{updateTeamCode}}"
+ "FAIL_UPDATE_COMPANY_NAME": "無法更新公司名稱。錯誤代碼:{{updateTeamCode}}",
+ "ASSET": "資產",
+ "OTHERCOMPREHENSIVEINCOME": "其他综合損益",
+ "COST": "成本"
}
}