diff --git a/src/components/dashboard/passenger-boss/Buttons/printAppraisalConfirmation.jsx b/src/components/dashboard/passenger-boss/Buttons/printAppraisalConfirmation.jsx
new file mode 100644
index 0000000..76da30b
--- /dev/null
+++ b/src/components/dashboard/passenger-boss/Buttons/printAppraisalConfirmation.jsx
@@ -0,0 +1,32 @@
+import PrintIcon from "@mui/icons-material/Print";
+import {Button, CircularProgress} from "@mui/material";
+import {useTranslations} from "next-intl";
+import {useState} from "react";
+import {useRouter} from "next/router";
+
+const PrintAppraisalConfirmation = () => {
+ const t = useTranslations();
+ const router = useRouter()
+ const [loading, setLoading] = useState(false)
+ const clickHandler = () => {
+ setLoading(true)
+ sessionStorage.setItem('appraisal-confirmation-print', JSON.stringify([]))
+ router.push('/dashboard/passenger-boss/prints/appraisal-confirmation')
+ }
+
+ return (
+ : }
+ onClick={clickHandler}
+ >
+ {t("PassengerBoss.print_appraisal_confirmation")}
+
+ )
+}
+
+export default PrintAppraisalConfirmation
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-boss/Buttons/printFinalCreditAmount.jsx b/src/components/dashboard/passenger-boss/Buttons/printFinalCreditAmount.jsx
new file mode 100644
index 0000000..3c43cf3
--- /dev/null
+++ b/src/components/dashboard/passenger-boss/Buttons/printFinalCreditAmount.jsx
@@ -0,0 +1,32 @@
+import PrintIcon from "@mui/icons-material/Print";
+import {Button, CircularProgress} from "@mui/material";
+import {useTranslations} from "next-intl";
+import {useRouter} from "next/router";
+import {useState} from "react";
+
+const PrintFinalCreditAmount = () => {
+ const t = useTranslations();
+ const router = useRouter()
+ const [loading, setLoading] = useState(false)
+ const clickHandler = () => {
+ setLoading(true)
+ sessionStorage.setItem('final-credit-amount-print', JSON.stringify([]))
+ router.push('/dashboard/passenger-boss/prints/final-credit-amount')
+ }
+
+ return (
+ : }
+ onClick={clickHandler}
+ >
+ {t("PassengerBoss.print_final_credit_amount")}
+
+ )
+}
+
+export default PrintFinalCreditAmount
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-boss/Prints/appraisal-confirmation/Content.jsx b/src/components/dashboard/passenger-boss/Prints/appraisal-confirmation/Content.jsx
new file mode 100644
index 0000000..3374d2a
--- /dev/null
+++ b/src/components/dashboard/passenger-boss/Prints/appraisal-confirmation/Content.jsx
@@ -0,0 +1,135 @@
+import PrintablePage from "@/core/components/PrintablePage";
+import {Box, Stack, Typography} from "@mui/material";
+
+const Content = ({data}) => {
+ return (
+ <>
+
+
+ {'اداره کل راهداری و حمل و نقل جاده ای'}
+ {`استان ${data.province_name}`}
+
+ {'موضوع: تاییدیه ارزیابی و تخصیص اعتبار'}
+ {'با سلام و احترام'}
+
+ {'با توجه به نامه شماره'}
+ 35482
+ {'مورخ'}
+ 1402/08/20
+ {'معاون محترم برنامه ریزی سازمان راهداری و حمل و نقل جاده ای در خصوص تسهیلات بند (الف) تبصره (18) قانون بودجه سال'}
+ 1402
+ {'موضوع بازسازی ناوگان اتوبوس و مینی بوس و نیز تصویب آن درشورای برنامه ریزی و توسعه استان'}
+ تهران
+ {'و نامه شماره'}
+ 35482
+ {'مورخ'}
+ 1402/08/20
+ {'اداره کل راهداری و حمل و نقل جاده ای'}
+ تهران
+ {'در خصوص استفاده از ظرفیت انجمن های صنفی رانندگان در تاریخ'}
+ 1402/08/20
+ {'از ناوگان اتوبوس/مینی بوس به شماره پلاک انتظامی'}
+ 25پ4582
+ {'و شماره هوشمند ناوگان'}
+ 5875698725
+ {'به مالکیت آقای'}
+ امیرحسین محمودی
+ {'با کد ملی'}
+ 0311318897
+ {'و شماره تماس'}
+ 09120630655
+ {'ساکن شهرستان'}
+ تهران
+ {'بازدید بعمل آمد که گزارش بازدید به شرخ ذیل مورد تایید می باشد.'}
+
+
+ {'* با توجه به یک فقره پیش فاکتور پیوست ارائه شده از تعمیرگاه مجاز'}
+
+ {'اصالت فاکتورهای شماره'}
+ 7563842
+ {'و صحت اقلام لازم و قیمت آنها جهت نیازمندی بازسازی ناوگان مذکور به مبلغ'}
+ {parseInt(2300000000).toLocaleString('en')}
+ {'ریال معادل'}
+ {parseInt(230000000).toLocaleString('en')}
+ {'تومان بابت هزینه کرد تعمیرات ناوگان فوق الذکر مورد تأیید می باشد.'}
+
+
+
+ رئیس انجمن آقای .......
+ انجمن صنفی رانندگان حمل و نقل مسافر
+ ......
+
+
+ {'تعهدنامه'}
+
+ {'اینجانب'}
+ امیرحسین محمودی
+ {'مالک ناوگان اتوبوس | مینی بوس با مشخصات فوق الذکر بدینوسیله تعهد می نمایم مبلغ دریافتی وام را برابر پیش فاکتور ارائه شده صرف تعمیرات و بازسازی ناوگان نمایم و اگر خلاف این ثابت شود برابر مقررات با بنده برخورد شود و حق هیچگونه اعتراضی ندارم.'}
+ تاریخ و امضاء
+
+
+
+ >
+ )
+}
+
+export default Content
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-boss/Prints/appraisal-confirmation/index.jsx b/src/components/dashboard/passenger-boss/Prints/appraisal-confirmation/index.jsx
new file mode 100644
index 0000000..901e84a
--- /dev/null
+++ b/src/components/dashboard/passenger-boss/Prints/appraisal-confirmation/index.jsx
@@ -0,0 +1,34 @@
+import {useEffect, useState} from "react";
+import CenterLayout from "@/layouts/CenterLayout";
+import {useTranslations} from "next-intl";
+import {Typography} from "@mui/material";
+import Content from "@/components/dashboard/passenger-boss/Prints/appraisal-confirmation/Content";
+
+const AppraisalConfirmationComponent = () => {
+ const t = useTranslations()
+ const [data, setData] = useState(null)
+ useEffect(() => {
+ if (sessionStorage.getItem('appraisal-confirmation-print') === null) {
+ sessionStorage.setItem('appraisal-confirmation-print', 'seen')
+ } else if (sessionStorage.getItem('appraisal-confirmation-print') === 'seen') {
+ setData(null)
+ } else if (data) {
+ sessionStorage.setItem('appraisal-confirmation-print', 'seen')
+ } else {
+ setData(JSON.parse(sessionStorage.getItem('appraisal-confirmation-print')))
+ }
+ }, [data]);
+ return (
+ <>
+ {!data ? (
+
+
+ {t('data_not_found')}
+
+
+ ) : data.map(item => )}
+ >
+ )
+}
+
+export default AppraisalConfirmationComponent
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-boss/Prints/final-credit-amount/Content.jsx b/src/components/dashboard/passenger-boss/Prints/final-credit-amount/Content.jsx
new file mode 100644
index 0000000..3c61db7
--- /dev/null
+++ b/src/components/dashboard/passenger-boss/Prints/final-credit-amount/Content.jsx
@@ -0,0 +1,136 @@
+import PrintablePage from "@/core/components/PrintablePage";
+import {Box, Grid, Stack, Typography} from "@mui/material";
+
+const Content = ({data}) => {
+ return (
+ <>
+
+
+ {'فرم صورتجلسه تعیین مبلغ نهایی اعتبار'}
+
+
+ {'با توجه به نامه شماره'}
+ 35482
+ {'مورخ'}
+ 1402/08/20
+ {'معاون محترم برنامه ریزی سازمان راهداری و حمل و نقل جاده ای در خصوص تسهیلات بند (الف) تبصره (18) قانون بودجه سال'}
+ 1402
+ {'موضوع بازسازی ناوگان اتوبوس و مینی بوس و نیز تصویب آن درشورای برنامه ریزی و توسعه استان'}
+ تهران
+ {'و نامه شماره'}
+ 35482
+ {'مورخ'}
+ 1402/08/20
+ {'اداره کل راهداری و حمل و نقل جاده ای'}
+ تهران
+ {'در خصوص استفاده از ظرفیت انجمن های صنفی رانندگان در تاریخ'}
+ 1402/08/20
+ {'از ناوگان اتوبوس/مینی بوس به شماره پلاک انتظامی'}
+ 25پ4582
+ {'و شماره هوشمند ناوگان'}
+ 5875698725
+ {'به مالکیت آقای'}
+ امیرحسین محمودی
+ {'با کد ملی'}
+ 0311318897
+ {'و شماره تماس'}
+ 09120630655
+ {'ساکن شهرستان'}
+ تهران
+ {'در جلسه مطرح شد که نتیجه آن به شرح ذیل مورد تایید می باشد.'}
+
+
+ {'با توجه به گزارش واصله از اداره ماشین آلات (نامه در پیوست موجود می باشد) جهت بازسازی ناوگان مذکور مبلغ .............................................. ریال معادل .............................................. تومان مورد تایید می باشد.'}
+
+
+
+
+ رئیس انجمن
+
+
+
+
+ رئیس اداره مسافر
+
+
+
+
+
+
+
+
+
+
+ امضاء
+
+
+
+
+ امضاء
+
+
+
+
+ امضاء
+
+
+
+
+ امضاء
+
+
+
+
+ {'تعهدنامه'}
+
+ {'اینجانب'}
+ امیرحسین محمودی
+ {'مالک ناوگان اتوبوس | مینی بوس با مشخصات فوق الذکر بدینوسیله تعهد می نمایم مبلغ دریافتی وام را برابر پیش فاکتور ارائه شده صرف تعمیرات و بازسازی ناوگان نمایم و اگر خلاف این ثابت شود برابر مقررات با بنده برخورد شود و حق هیچگونه اعتراضی ندارم.'}
+ تاریخ و امضاء
+
+
+
+ >
+ )
+}
+
+export default Content
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-boss/Prints/final-credit-amount/index.jsx b/src/components/dashboard/passenger-boss/Prints/final-credit-amount/index.jsx
new file mode 100644
index 0000000..927f8b9
--- /dev/null
+++ b/src/components/dashboard/passenger-boss/Prints/final-credit-amount/index.jsx
@@ -0,0 +1,40 @@
+import {useEffect, useState} from "react";
+import CenterLayout from "@/layouts/CenterLayout";
+import {useTranslations} from "next-intl";
+import {Typography} from "@mui/material";
+import Content from "@/components/dashboard/passenger-boss/Prints/final-credit-amount/Content";
+
+const FinalCreditAmountComponent = () => {
+ const t = useTranslations()
+ const [data, setData] = useState(null)
+ useEffect(() => {
+ if (sessionStorage.getItem('final-credit-amount-print') === null) {
+ sessionStorage.setItem('final-credit-amount-print', 'seen')
+ } else if (sessionStorage.getItem('final-credit-amount-print') === 'seen') {
+ setData(null)
+ } else if (data) {
+ sessionStorage.setItem('final-credit-amount-print', 'seen')
+ } else {
+ setData(JSON.parse(sessionStorage.getItem('final-credit-amount-print')))
+ }
+ }, [data]);
+ return (
+ <>
+ {!data ? (
+
+
+ {t('data_not_found')}
+
+
+ ) : !data.length ? (
+
+
+ {t('data_not_found')}
+
+
+ ) : data.map(item => )}
+ >
+ )
+}
+
+export default FinalCreditAmountComponent
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-boss/TableToolbar.jsx b/src/components/dashboard/passenger-boss/TableToolbar.jsx
new file mode 100644
index 0000000..09f2f57
--- /dev/null
+++ b/src/components/dashboard/passenger-boss/TableToolbar.jsx
@@ -0,0 +1,14 @@
+import {Stack} from "@mui/material";
+import PrintAppraisalConfirmation from "@/components/dashboard/passenger-boss/Buttons/printAppraisalConfirmation";
+import PrintFinalCreditAmount from "@/components/dashboard/passenger-boss/Buttons/printFinalCreditAmount";
+
+const TableToolbar = () => {
+ return (
+
+
+
+
+ )
+}
+
+export default TableToolbar
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-boss/index.jsx b/src/components/dashboard/passenger-boss/index.jsx
index c338f6e..1a13b3b 100644
--- a/src/components/dashboard/passenger-boss/index.jsx
+++ b/src/components/dashboard/passenger-boss/index.jsx
@@ -6,6 +6,7 @@ import TableRowActions from "./TableRowActions";
import moment from "jalali-moment";
import DataTable from "@/core/components/DataTable";
import MuiDatePicker from "@/core/components/MuiDatePicker";
+import TableToolbar from "@/components/dashboard/passenger-boss/TableToolbar";
function DashboardPassengerOfficeComponent() {
const t = useTranslations();
@@ -161,7 +162,8 @@ function DashboardPassengerOfficeComponent() {
tableUrl={GET_PASSENGER_BOSS}
columns={columns}
selectableRow={false}
- enableCustomToolbar={false}
+ enableCustomToolbar={true}
+ CustomToolbar={TableToolbar}
enableLastUpdate={true}
sorting={[{
id: 'id', desc: false
diff --git a/src/pages/dashboard/passenger-boss/prints/appraisal-confirmation.jsx b/src/pages/dashboard/passenger-boss/prints/appraisal-confirmation.jsx
new file mode 100644
index 0000000..c2a021a
--- /dev/null
+++ b/src/pages/dashboard/passenger-boss/prints/appraisal-confirmation.jsx
@@ -0,0 +1,21 @@
+import {parse} from "next-useragent";
+import AppraisalConfirmationComponent from "@/components/dashboard/passenger-boss/Prints/appraisal-confirmation";
+
+export default function AppraisalConfirmation() {
+ return (
+
+ )
+}
+
+export async function getServerSideProps({req, locale}) {
+ const {isBot} = parse(req.headers["user-agent"]);
+ return {
+ props: {
+ messages: (await import(`&/locales/${locale}/app.json`)).default,
+ title: "Dashboard.passenger_boss_page",
+ isBot,
+ locale,
+ layout: {name: 'PrintLayout'}
+ },
+ };
+}
\ No newline at end of file
diff --git a/src/pages/dashboard/passenger-boss/prints/final-credit-amount.jsx b/src/pages/dashboard/passenger-boss/prints/final-credit-amount.jsx
new file mode 100644
index 0000000..0bd763b
--- /dev/null
+++ b/src/pages/dashboard/passenger-boss/prints/final-credit-amount.jsx
@@ -0,0 +1,21 @@
+import {parse} from "next-useragent";
+import FinalCreditAmountComponent from "@/components/dashboard/passenger-boss/Prints/final-credit-amount";
+
+export default function FinalCreditAmount() {
+ return (
+
+ )
+}
+
+export async function getServerSideProps({req, locale}) {
+ const {isBot} = parse(req.headers["user-agent"]);
+ return {
+ props: {
+ messages: (await import(`&/locales/${locale}/app.json`)).default,
+ title: "Dashboard.passenger_boss_page",
+ isBot,
+ locale,
+ layout: {name: 'PrintLayout'}
+ },
+ };
+}
\ No newline at end of file