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 ( + + ) +} + +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 ( + + ) +} + +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