Merge branch 'feature/field_correction' into 'develop'
refer text See merge request witel-front-end/loan-facilities/expert-v2!18
This commit is contained in:
@@ -6,8 +6,8 @@ NEXT_PUBLIC_DEFAULT_DIRECTION = "rtl"
|
||||
NEXT_PUBLIC_PRIMARY_MAIN = "#084070"
|
||||
NEXT_PUBLIC_SECONDARY_MAIN = "#FF4E00"
|
||||
|
||||
NEXT_PUBLIC_FACILITY_BANK = 33
|
||||
NEXT_PUBLIC_FACILITY_PERSON = 10
|
||||
NEXT_PUBLIC_FACILITY_BANK = 66
|
||||
NEXT_PUBLIC_FACILITY_PERSON = 20
|
||||
NEXT_PUBLIC_BUS_AMOUNT=10000
|
||||
NEXT_PUBLIC_MINIBUS_AMOUNT=4000
|
||||
|
||||
|
||||
@@ -195,6 +195,7 @@
|
||||
"NavganProvinceManager": {
|
||||
"name": "نام",
|
||||
"id": "کد یکتا",
|
||||
"interest_rate": "نرخ بهره وام(درصد)",
|
||||
"physical_progress": "درصد پیشرفت فیزیکی",
|
||||
"repayment_period": "دوره باز پرداخت",
|
||||
"committed_employment": "اشتغال ایجاد شده",
|
||||
@@ -221,7 +222,7 @@
|
||||
"navgan_id": "کد ناوگان",
|
||||
"vehicle_type": "نوع ماشین",
|
||||
"state_name": "وضعیت درخواست",
|
||||
"revert": "ارجاع به معاون حمل و نقل",
|
||||
"revert": "بازگشت به معاون حمل و نقل",
|
||||
"confirm": "تایید نهایی و ارجاع به بانک",
|
||||
"upload_file_unit": "فایل بارگذاری شده باید حداکثر 5Mb باشد",
|
||||
"upload_file_format": "فرمت قابل قبول : png,jpg,pdf",
|
||||
@@ -258,7 +259,7 @@
|
||||
"navgan_id": "کد ناوگان",
|
||||
"vehicle_type": "نوع ماشین",
|
||||
"state_name": "وضعیت درخواست",
|
||||
"confirm": "تایید و ارجاع به معاون حمل و نقل",
|
||||
"confirm": "ارجاع به معاون حمل و نقل",
|
||||
"upload_file": "فایل خود را بارگذاری کنید(اختیاری)",
|
||||
"upload_expert_img": "فایل گزارش کارشناسی را بارگذاری کنید",
|
||||
"upload_file_required": "وارد کردن گزارش کارشناسی الزامیست",
|
||||
@@ -410,6 +411,7 @@
|
||||
"refer_reason": "علت ارجاع",
|
||||
"plate_number": "پلاک",
|
||||
"id": "کد یکتا",
|
||||
"interest_rate": "نرخ بهره وام(درصد)",
|
||||
"facility_bank": "سهم بانک",
|
||||
"facility_gov": "سهم دولت",
|
||||
"facility_person": "سهم متقاضی",
|
||||
@@ -434,8 +436,8 @@
|
||||
"navgan_id": "کد ناوگان",
|
||||
"vehicle_type": "نوع ماشین",
|
||||
"state_name": "وضعیت درخواست",
|
||||
"confirm": "تایید و ارجاع به مدیر کل",
|
||||
"revert": "ارجاع به کارتابل کارگروه",
|
||||
"confirm": "ارجاع به مدیر کل",
|
||||
"revert": "بازگشت به کارتابل کارگروه",
|
||||
"upload_file_unit": "فایل بارگذاری شده باید حداکثر 5Mb باشد",
|
||||
"upload_file_format": "فرمت قابل قبول : png,jpg,pdf",
|
||||
"excel_report": "گزارش اکسل",
|
||||
@@ -545,10 +547,12 @@
|
||||
"updated_at": "تاریخ بروزرسانی"
|
||||
},
|
||||
"ConfirmDialog": {
|
||||
"confirm": "تایید",
|
||||
"confirm": "ارجاع",
|
||||
"month": "(ماه)",
|
||||
"confirm_reason": "علت تایید",
|
||||
"context": "آیا از تایید این آیتم اطمینان دارید؟",
|
||||
"button-cancel": "بستن",
|
||||
"loan_interest": "نرخ بهره وام",
|
||||
"button-confirm": "ارجاع",
|
||||
"facility_bank": "تسهیلات سهم بانک",
|
||||
"facility_person": "تسهیلات سهم متقاضی",
|
||||
@@ -558,6 +562,9 @@
|
||||
"existing_employment": "تعداد اشتغال موجود",
|
||||
"physical_progress": "درصد پیشرفت فیزیکی",
|
||||
"interest_rate": "نرخ بهره",
|
||||
"interest_rate_percentage": "درصد",
|
||||
"confirmation_reason": "علت تایید کارگروه",
|
||||
"no_info": "اطلاعاتی یافت نشد!!!",
|
||||
"description_error": "وارد کردن توضیحات الزامی است!",
|
||||
"optional": " (اختیاری)",
|
||||
"unit": " (میلیون ریال)",
|
||||
@@ -572,6 +579,7 @@
|
||||
"approved_amount_error": "وارد کردن مبلغ مصوب الزامیست",
|
||||
"facility_bank_error": "وارد کردن تسهیلات سهم بانک الزامیست",
|
||||
"facility_gov_error": "وارد کردن تسهیلات سهم دولت الزامیست",
|
||||
"confirm_reason_error": "وارد کردن علت تایید الزامیست",
|
||||
"committed_employment_error": "وارد کردن تعداد اشتغال تعهد شده الزامیست",
|
||||
"history_facilities_error": "وارد کردن سابقه استفاده از تسهیلات تکلیفی الزامیست",
|
||||
"existing_employment_error": "وارد کردن تعداد اشتغال موجود الزامیست",
|
||||
@@ -588,12 +596,14 @@
|
||||
"approved_amount_number": "مبلغ مصوب باید عدد باشد",
|
||||
"facility_bank_number": "تسهیلات سهم بانک باید عدد باشد",
|
||||
"interest_rate_number": "نرخ بهره باید عدد باشد",
|
||||
"loan_interest_number": "نرخ بهره باید عدد باشد",
|
||||
"facility_gov_number": "تسهیلات سهم دولت باید عدد باشد",
|
||||
"committed_employment_number": "تعداد سابقه استفاده از تسهیلات تکلیفی باید عدد باشد",
|
||||
"history_facilities_number": "تعداد اشتغال تعهد شده باید عدد باشد",
|
||||
"existing_employment_number": "تعداد اشتغال موجود باید عدد باشد",
|
||||
"sakht_period_positive": "دوره ساخت باید مثبت باشد",
|
||||
"interest_rate_positive": "نرخ بهره باید مثبت باشد",
|
||||
"loan_interest_positive": "نرخ بهره باید مثبت باشد",
|
||||
"tanafos_period_positive": "دوره تنفس باید مثبت باشد",
|
||||
"sakht_period_number": "دوره ساخت باید عدد باشد",
|
||||
"repayment_period_number": "دوره باز پرداخت باید عدد باشد",
|
||||
@@ -614,6 +624,7 @@
|
||||
"repayment_period_error": "وارد کردن دوره باز پرداخت الزامیست",
|
||||
"participation_period_error": "وارد کردن دوره مشارکت الزامیست",
|
||||
"interest_rate_error": "وارد کردن نرخ بهره الزامیست",
|
||||
"loan_interest_error": "وارد کردن نرخ بهره وام الزامیست",
|
||||
"proposed_amount": "مبلغ پیشنهادی",
|
||||
"proposed_amount_positive": "مقدار پیشنهادی باید مثبت باشد",
|
||||
"proposed_amount_number": "مقدار پیشنهادی باید عدد باشد"
|
||||
@@ -646,10 +657,10 @@
|
||||
},
|
||||
"RevertDialog": {
|
||||
"typography": "آیا میخواهید این درخواست را رد کنید ؟",
|
||||
"revert": "ارجاع",
|
||||
"revert": "بازگشت",
|
||||
"context": "آیا از عدم تایید این آیتم اطمینان دارید؟",
|
||||
"button-cancel": "بستن",
|
||||
"button-revert": "ارجاع",
|
||||
"button-revert": "بازگشت",
|
||||
"description": "توضیحات خود را وارد نمائید",
|
||||
"description_error": "وارد کردن توضیحات الزامی است!"
|
||||
},
|
||||
@@ -794,7 +805,7 @@
|
||||
"phone_number": "شماره تلفن",
|
||||
"requested_facilities" : "تسهیلات مورد تقاضا",
|
||||
"physical_progress" : "درصد پیشرفت فیزیکی",
|
||||
"investment" : "سرمایه گذاری انجام شده",
|
||||
"investment" : "ارزش ناوگان",
|
||||
"no_info" : "اطلاعاتی موجود نیست !!!",
|
||||
"is_legal_person": "نوع شخص",
|
||||
"legal_person" : "شخص حقوقی",
|
||||
@@ -837,8 +848,8 @@
|
||||
"button-cancel": "بستن"
|
||||
},
|
||||
"ReferDialog": {
|
||||
"refer-passenger-boss": "ارجاع به کارگروه",
|
||||
"refer-user": "ارجاع به کاربر",
|
||||
"refer-passenger-boss": "بازگشت به کارگروه",
|
||||
"refer-user": "بازگشت به کاربر",
|
||||
"refer-confirmation": "آیا از ارجاع این مورد اطمینان دارید ؟",
|
||||
"button-cancel": "انصراف",
|
||||
"typography": "آیا از ارجاع این مورد اطمینان دارید ؟",
|
||||
|
||||
@@ -105,16 +105,27 @@ const TableContent = ({ rowId }) => {
|
||||
"&:last-child td, &:last-child th": { border: 0 },
|
||||
}}
|
||||
>
|
||||
<TableCell> {latest_history.expert.name}</TableCell>
|
||||
<TableCell>
|
||||
{" "}
|
||||
{latest_history?.expert?.name ? latest_history.expert.name : null}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
{moment(latest_history.created_at)
|
||||
.locale("fa")
|
||||
.format("HH:mm | yyyy/MM/DD")}
|
||||
</TableCell>
|
||||
<TableCell>{latest_history.expert.position}</TableCell>
|
||||
<TableCell>{latest_history.previous_state_name}</TableCell>
|
||||
<TableCell>{action_name[latest_history.action]}</TableCell>
|
||||
<TableCell>{latest_history.expert_description}</TableCell>
|
||||
<TableCell>
|
||||
{latest_history?.expert?.position
|
||||
? latest_history.expert.position
|
||||
: null}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
{latest_history?.previous_state_name
|
||||
? latest_history.previous_state_name
|
||||
: null}
|
||||
</TableCell>
|
||||
<TableCell>{action_name[latest_history?.action]}</TableCell>
|
||||
<TableCell>{latest_history?.expert_description}</TableCell>
|
||||
<TableCell>
|
||||
{latest_history.attachments.map((attachment, index) => (
|
||||
<PrintHistory key={index} attachment={attachment} />
|
||||
|
||||
@@ -267,6 +267,16 @@ function DashboardNavganProvinceManagerComponent() {
|
||||
columnFilterModeOptions: ["equals"],
|
||||
Cell: ({ renderedCellValue }) => <Typography variant="body2">{renderedCellValue}</Typography>,
|
||||
},
|
||||
{
|
||||
accessorFn: (row) => row.interest_rate,
|
||||
id: "interest_rate",
|
||||
header: t("NavganProvinceManager.interest_rate"),
|
||||
enableColumnFilter: true,
|
||||
datatype: "numeric",
|
||||
filterFn: "equals",
|
||||
columnFilterModeOptions: ["equals"],
|
||||
Cell: ({ renderedCellValue }) => <Typography variant="body2">{renderedCellValue}</Typography>,
|
||||
},
|
||||
{
|
||||
accessorFn: (row) => row.committed_employment,
|
||||
id: "committed_employment",
|
||||
|
||||
@@ -54,6 +54,7 @@ const ConfirmContent = ({ rowId, mutate, setOpenConfirmDialog, vehicle_type, row
|
||||
.test("is-number", `${t("ConfirmDialog.repayment_period_number")}`, (value) => !isNaN(value))
|
||||
.test("positive", `${t("ConfirmDialog.repayment_period_positive")}`, (value) => value >= 0)
|
||||
.required(t("ConfirmDialog.repayment_period_error")),
|
||||
confirm_reason: Yup.string().required(t("ConfirmDialog.confirm_reason_error")),
|
||||
committed_employment: Yup.mixed()
|
||||
.test("is-number", `${t("ConfirmDialog.committed_employment_number")}`, (value) => !isNaN(value))
|
||||
.test("positive", `${t("ConfirmDialog.committed_employment_positive")}`, (value) => value >= 0)
|
||||
@@ -62,6 +63,10 @@ const ConfirmContent = ({ rowId, mutate, setOpenConfirmDialog, vehicle_type, row
|
||||
.test("is-number", `${t("ConfirmDialog.existing_employment_number")}`, (value) => !isNaN(value))
|
||||
.test("positive", `${t("ConfirmDialog.existing_employment_positive")}`, (value) => value >= 0)
|
||||
.required(t("ConfirmDialog.existing_employment_error")),
|
||||
loan_interest: Yup.mixed()
|
||||
.test("is-number", `${t("ConfirmDialog.loan_interest_number")}`, (value) => !isNaN(value))
|
||||
.test("positive", `${t("ConfirmDialog.loan_interest_positive")}`, (value) => value >= 0)
|
||||
.required(t("ConfirmDialog.loan_interest_error")),
|
||||
sakht_period: Yup.mixed()
|
||||
.test("is-number", `${t("ConfirmDialog.sakht_period_number")}`, (value) => !isNaN(value))
|
||||
.test("positive", `${t("ConfirmDialog.sakht_period_positive")}`, (value) => value > 0)
|
||||
@@ -83,7 +88,7 @@ const ConfirmContent = ({ rowId, mutate, setOpenConfirmDialog, vehicle_type, row
|
||||
|
||||
const formik = useFormik({
|
||||
initialValues: {
|
||||
description: row.original.description || "",
|
||||
confirm_reason: row.original.confirmation_reason || "",
|
||||
approved_amount: row.original.approved_amount / 1000000 || "",
|
||||
facility_bank: row.original.facility_bank / 1000000 || "",
|
||||
facility_gov: row.original.facility_gov / 1000000 || "",
|
||||
@@ -94,6 +99,7 @@ const ConfirmContent = ({ rowId, mutate, setOpenConfirmDialog, vehicle_type, row
|
||||
sakht_period: row.original.sakht_period || "",
|
||||
tanafos_period: row.original.tanafos_period || "",
|
||||
existing_employment: row.original.existing_employment || "",
|
||||
loan_interest: row.original.interest_rate || "",
|
||||
expert_img: null,
|
||||
},
|
||||
validationSchema,
|
||||
@@ -106,10 +112,10 @@ const ConfirmContent = ({ rowId, mutate, setOpenConfirmDialog, vehicle_type, row
|
||||
formData.append("repayment_period", values.repayment_period);
|
||||
formData.append("committed_employment", values.committed_employment);
|
||||
formData.append("existing_employment", values.existing_employment);
|
||||
formData.append("interest_rate", values.loan_interest);
|
||||
formData.append("sakht_period", values.sakht_period);
|
||||
formData.append("tanafos_period", values.tanafos_period);
|
||||
|
||||
if (values.description != "") formData.append("expert_description", values.description);
|
||||
formData.append("confirmation_reason", values.confirm_reason);
|
||||
if (values.physical_progress != "") formData.append("physical_progress", values.physical_progress);
|
||||
if (values.expert_img != null) {
|
||||
const attachments = [
|
||||
@@ -179,24 +185,6 @@ const ConfirmContent = ({ rowId, mutate, setOpenConfirmDialog, vehicle_type, row
|
||||
<>
|
||||
<DialogContent>
|
||||
<Stack spacing={2}>
|
||||
<Stack>
|
||||
<TextField
|
||||
name="description"
|
||||
multiline
|
||||
rows={8}
|
||||
label={
|
||||
<>
|
||||
<span>{t("ConfirmDialog.description")}</span>
|
||||
<small>{t("ConfirmDialog.optional")}</small>
|
||||
</>
|
||||
}
|
||||
value={formik.values.description}
|
||||
onChange={formik.handleChange}
|
||||
fullWidth
|
||||
variant="outlined"
|
||||
sx={{ mt: 1 }}
|
||||
/>
|
||||
</Stack>
|
||||
<Stack>
|
||||
<PriceField
|
||||
name="approved_amount"
|
||||
@@ -426,6 +414,36 @@ const ConfirmContent = ({ rowId, mutate, setOpenConfirmDialog, vehicle_type, row
|
||||
onBlur={formik.handleBlur("tanafos_period")}
|
||||
/>
|
||||
</Stack>
|
||||
<Stack>
|
||||
<SelectBox
|
||||
name="loan_interest"
|
||||
label={t("ConfirmDialog.loan_interest")}
|
||||
size="small"
|
||||
value={formik.values.loan_interest}
|
||||
selectType="loan_interest"
|
||||
selectors={[
|
||||
{
|
||||
id: 1,
|
||||
value: "13",
|
||||
name: "13 درصد",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
value: "15",
|
||||
name: "15 درصد",
|
||||
},
|
||||
]}
|
||||
schema={{ value: "value", name: "name" }}
|
||||
select={formik.values.loan_interest}
|
||||
handleChange={(event) => {
|
||||
formik.setFieldValue("loan_interest", event.target.value);
|
||||
}}
|
||||
setFieldTouched={formik.setFieldTouched}
|
||||
error={formik.touched.loan_interest && Boolean(formik.errors.loan_interest)}
|
||||
helperText={formik.touched.loan_interest && formik.errors.loan_interest}
|
||||
onBlur={formik.handleBlur("loan_interest")}
|
||||
/>
|
||||
</Stack>
|
||||
<Stack>
|
||||
<TextField
|
||||
name="committed_employment"
|
||||
@@ -476,6 +494,22 @@ const ConfirmContent = ({ rowId, mutate, setOpenConfirmDialog, vehicle_type, row
|
||||
fullWidth
|
||||
/>
|
||||
</Stack>
|
||||
<Stack>
|
||||
<TextField
|
||||
name="confirm_reason"
|
||||
multiline
|
||||
rows={4}
|
||||
label={t("ConfirmDialog.confirm_reason")}
|
||||
value={formik.values.confirm_reason}
|
||||
onChange={formik.handleChange}
|
||||
onBlur={formik.handleBlur("confirm_reason")}
|
||||
error={formik.touched.confirm_reason && Boolean(formik.errors.confirm_reason)}
|
||||
helperText={formik.touched.confirm_reason && formik.errors.confirm_reason}
|
||||
fullWidth
|
||||
variant="outlined"
|
||||
sx={{ mt: 1 }}
|
||||
/>
|
||||
</Stack>
|
||||
<Stack>
|
||||
<Typography>{t("PassengerBoss.upload_expert_img")}</Typography>
|
||||
<UploadSystem
|
||||
|
||||
@@ -2,6 +2,7 @@ import UploadSystem from "@/core/components/UploadSystem";
|
||||
import useNotification from "@/lib/app/hooks/useNotification";
|
||||
import useRequest from "@/lib/app/hooks/useRequest";
|
||||
import {
|
||||
Box,
|
||||
Button,
|
||||
Checkbox,
|
||||
DialogActions,
|
||||
@@ -23,7 +24,7 @@ import CustomAccordion from "@/core/components/CustomAccordion";
|
||||
import ImageContent from "@/core/components/ImageContent";
|
||||
import NumberShowBox from "@/core/components/NumberShowBox";
|
||||
|
||||
const ConfirmContent = ({ rowId, mutate, setOpenConfirmDialog, handleSizeChangeClick }) => {
|
||||
const ConfirmContent = ({ rowId, row, mutate, setOpenConfirmDialog, handleSizeChangeClick }) => {
|
||||
const t = useTranslations();
|
||||
const [selectedImage, setSelectedImage] = useState("");
|
||||
const [fileType, setfileType] = useState(null);
|
||||
@@ -256,6 +257,16 @@ const ConfirmContent = ({ rowId, mutate, setOpenConfirmDialog, handleSizeChangeC
|
||||
headerTitle={t("ConfirmDialog.repayment_period")}
|
||||
unitTitle={t("ConfirmDialog.repayment_period_month")}
|
||||
/>
|
||||
<Box sx={{ border: "1px solid #ccc", p: 2, mb: 2, borderRadius: "8px" }}>
|
||||
<Typography sx={{ color: "primary.main", fontWeight: 500 }}>
|
||||
{t("ConfirmDialog.confirmation_reason")}
|
||||
</Typography>
|
||||
<Typography pt={1}>
|
||||
{row.original.confirmation_reason
|
||||
? row.original.confirmation_reason
|
||||
: t("ConfirmDialog.no_info")}
|
||||
</Typography>
|
||||
</Box>
|
||||
{renderCustomAccordions()}
|
||||
</>
|
||||
)}
|
||||
|
||||
@@ -3,7 +3,7 @@ import { useTranslations } from "next-intl";
|
||||
import { useState, useEffect } from "react";
|
||||
import ConfirmContent from "./ConfirmContent";
|
||||
import CallMadeIcon from "@mui/icons-material/CallMade";
|
||||
const Confirm = ({ rowId, mutate }) => {
|
||||
const Confirm = ({ rowId, mutate, row }) => {
|
||||
const t = useTranslations();
|
||||
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
||||
const [dialogSize, setDialogSize] = useState("sm");
|
||||
@@ -45,6 +45,7 @@ const Confirm = ({ rowId, mutate }) => {
|
||||
<ConfirmContent
|
||||
mutate={mutate}
|
||||
rowId={rowId}
|
||||
row={row}
|
||||
setOpenConfirmDialog={setOpenConfirmDialog}
|
||||
handleSizeChangeClick={handleSizeChangeClick}
|
||||
/>
|
||||
|
||||
@@ -10,7 +10,7 @@ const TableRow = ({ row, mutate }) => {
|
||||
<Box sx={{ display: "flex", flexWrap: "nowrap", gap: "8px" }}>
|
||||
{row.original.latest_history?.action === "refer" ? <ReferReason row={row} /> : null}
|
||||
<UserInfoForm rowId={row.getValue("id")} row={row} />
|
||||
<Confirm rowId={row.getValue("id")} mutate={mutate} />
|
||||
<Confirm row={row} rowId={row.getValue("id")} mutate={mutate} />
|
||||
<Revert rowId={row.getValue("id")} mutate={mutate} />
|
||||
<Reject rowId={row.getValue("id")} mutate={mutate} />
|
||||
</Box>
|
||||
|
||||
@@ -265,6 +265,16 @@ function DashboardTransportationAssistanceComponent() {
|
||||
columnFilterModeOptions: ["equals"],
|
||||
Cell: ({ renderedCellValue }) => <Typography variant="body2">{renderedCellValue}</Typography>,
|
||||
},
|
||||
{
|
||||
accessorFn: (row) => row.interest_rate,
|
||||
id: "interest_rate",
|
||||
header: t("TransportationAssistance.interest_rate"),
|
||||
enableColumnFilter: true,
|
||||
datatype: "numeric",
|
||||
filterFn: "equals",
|
||||
columnFilterModeOptions: ["equals"],
|
||||
Cell: ({ renderedCellValue }) => <Typography variant="body2">{renderedCellValue}</Typography>,
|
||||
},
|
||||
{
|
||||
accessorFn: (row) => row.committed_employment,
|
||||
id: "committed_employment",
|
||||
|
||||
Reference in New Issue
Block a user