import {
  Accordion,
  AccordionDetails,
  AccordionSummary,
  Button,
  Checkbox,
  IconButton,
  TextField,
  Tooltip,
  Typography,
} from "@mui/material";
import React, { useContext, useEffect, useState } from "react";
import { Grid } from "../../../../components/grid/Grid";
import { getRoleFromUrl } from "../../../../utils/getRoleFromUrl";
import { ProvincePaymentPayDept } from "../province-payment-pay-dept/ProvincePaymentPayDept";
import { OPEN_MODAL } from "../../../../lib/redux/slices/appSlice";
import { useDispatch, useSelector } from "react-redux";
import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward";
import { provincePaymentGetKillersOfKillhousesInfo } from "../../services/province-payment-get-killers-of-killhouses-info";
import ResponsiveTable from "../../../../components/responsive-table/ResponsiveTable";
import { provinceGetWagesOfKillhousesService } from "../../services/province-get-wages-of-killhouses";
import { provinceGetPaymentByWeightOverview } from "../../services/province-get-payment-by-weight-overview";
import { getSystemBaseAddress } from "../../../../utils/getSystemBaseAddress";
import { SimpleTable } from "../../../../components/simple-table/SimpleTable";
import { AppContext } from "../../../../contexts/AppContext";
import axios from "axios";
import SystemUpdateAltIcon from "@mui/icons-material/SystemUpdateAlt";
import VisibilityIcon from "@mui/icons-material/Visibility";
import moment from "moment";
import { DatePicker } from "@mui/x-date-pickers";
import ToggleOffOutlinedIcon from "@mui/icons-material/ToggleOffOutlined";
import ToggleOnIcon from "@mui/icons-material/ToggleOn";
import { useNavigate } from "react-router-dom";
import {
  ROUTE_ADMINX_ROUTE_KILLERS_WAGES,
  ROUTE_PROVINCE_ROUTE_KILLERS_WAGES,
  ROUTE_SUPER_ADMIN_ROUTE_KILLERS_WAGES,
} from "../../../../routes/routes";
import { checkPathStartsWith } from "../../../../utils/checkPathStartsWith";

export const ProvincePaymentByWeightOverviewTable = () => {
  const dispatch = useDispatch();
  const [tableData, setTableData] = useState();
  const [tableDataShares, setTableDataShares] = useState([]);
  const [tableDataOfWages, setTableDataOfWages] = useState();
  const { provincePaymentKillersOfKillhouses } = useSelector(
    (item) => item.provinceSlice
  );
  const userPath = useSelector((state) => state.userSlice.userPath);
  const [openNotif] = useContext(AppContext);
  const userKey = useSelector((state) => state.userSlice.userProfile.key);
  const selectedSubUser = useSelector(
    (state) => state.userSlice.selectedSubUser
  );
  const [withDate, setWithDate] = useState(false);

  const navigate = useNavigate();

  const [, , selectedDate1, setSelectedDate1, selectedDate2, setSelectedDate2] =
    useContext(AppContext);
  useEffect(() => {
    const currentDate = moment(new Date()).format("YYYY-MM-DD");
    setSelectedDate1(currentDate);
    setSelectedDate2(currentDate);
  }, []);

  useEffect(() => {
    if (getRoleFromUrl() === "KillHouse") {
      dispatch(
        provincePaymentGetKillersOfKillhousesInfo({
          role_key: checkPathStartsWith("province")
            ? selectedSubUser?.key || ""
            : "",
        })
      );
    }
  }, [selectedSubUser?.key]);

  const { provincePaymentByWeightOverview } = useSelector(
    (item) => item.provinceSlice
  );

  useEffect(() => {
    const d = provincePaymentByWeightOverview?.wageInfo?.shares?.map(
      (item, i) => {
        return [
          i + 1,
          item?.name,
          item?.outProvincePoultryRequestWage?.toLocaleString(),
          item?.provinceKillRequestWage?.toLocaleString(),
          item?.freeSellCarcassesWage?.toLocaleString(),
          item?.freeBuyingCarcassesWage?.toLocaleString(),
          item?.freeBuyingLiveWage?.toLocaleString(),
          parseInt(Math.floor(item?.totalWage / 1000) * 1000)?.toLocaleString(),
          parseInt(
            Math.floor(item?.totalPaidWage / 1000) * 1000
          )?.toLocaleString(),
          parseInt(
            Math.floor(item?.totalUnpaidWage / 1000) * 1000
          )?.toLocaleString(),
        ];
      }
    );

    setTableDataShares(d);
  }, [provincePaymentByWeightOverview]);

  useEffect(() => {
    dispatch(
      provinceGetPaymentByWeightOverview({
        date1: withDate ? selectedDate1 : null,
        date2: withDate ? selectedDate2 : null,
        role: getRoleFromUrl(),
        role_key: checkPathStartsWith("province")
          ? selectedSubUser?.key || ""
          : "",
      })
    );
  }, [dispatch, selectedDate1, selectedDate2, withDate, selectedSubUser?.key]);

  useEffect(() => {
    if (provincePaymentByWeightOverview) {
      const d = provincePaymentKillersOfKillhouses?.map((item, i) => {
        if (
          provincePaymentByWeightOverview?.wageInfo?.wageCountingType === "live"
        ) {
          return [
            item?.name,
            Math.ceil(item?.wageInfo?.totalWage)?.toLocaleString(),
            Math.ceil(item?.wageInfo?.totalPaidWage)?.toLocaleString(),
            Math.ceil(item?.wageInfo?.off)?.toLocaleString(),
            Math.ceil(item?.wageInfo?.totalUnpaidWage)?.toLocaleString(),
            <a
              href={`${window.location.origin}/pay/${getSystemBaseAddress(
                userPath
              )}/${item?.wageInfo?.userToken}`}
              style={{ color: "blue" }}
              target="_blank"
              key={i}
              rel="noreferrer"
            >{`${window.location.origin}/pay/${getSystemBaseAddress(
              userPath
            )}/${item?.wageInfo?.userToken}`}</a>,
            Math.ceil(
              item?.wageInfo?.totalProvinceLiveWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.provinceKillRequestsTotalWage
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsOutProvinceCarcasesTotalWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsOutProvinceCarcasesTotalWage
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsCarcasesTotalWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsCarcasesTotalWage
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsLiveTotalWeight
            )?.toLocaleString(),
            Math.ceil(item?.wageInfo?.freeBarsLiveTotalWage)?.toLocaleString(),
          ];
        } else {
          return [
            item?.name,
            Math.ceil(item?.wageInfo?.totalWage)?.toLocaleString(),
            Math.ceil(item?.wageInfo?.totalPaidWage)?.toLocaleString(),
            Math.ceil(item?.wageInfo?.off)?.toLocaleString(),
            Math.ceil(item?.wageInfo?.totalUnpaidWage)?.toLocaleString(),
            <a
              href={`${window.location.origin}/pay/${getSystemBaseAddress(
                userPath
              )}/${item?.wageInfo?.userToken}`}
              style={{ color: "blue" }}
              target="_blank"
              key={i}
              rel="noreferrer"
            >{`${window.location.origin}/pay/${getSystemBaseAddress(
              userPath
            )}/${item?.wageInfo?.userToken}`}</a>,
            Math.ceil(
              item?.wageInfo?.totalProvinceLiveWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.totalProvinceCarcassesWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.provinceKillRequestsTotalWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.provinceKillRequestsTotalWage
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsOutProvinceCarcasesTotalWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsOutProvinceCarcasesTotalWage
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsCarcasesTotalWeight
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsCarcasesTotalWage
            )?.toLocaleString(),
            Math.ceil(
              item?.wageInfo?.freeBarsLiveTotalWeight
            )?.toLocaleString(),
            Math.ceil(item?.wageInfo?.freeBarsLiveTotalWage)?.toLocaleString(),
          ];
        }
      });

      setTableData(d);
    }
  }, [provincePaymentKillersOfKillhouses, provincePaymentByWeightOverview]);

  const getKillHouseShares = (item, name) => {
    const d = item?.map((item, i) => {
      return [
        i + 1,
        item?.name,
        item?.provinceKillRequestWage?.toLocaleString(),
        item?.returnProvinceKillRequestWage?.toLocaleString(),
        item?.freeSellCarcassesWage?.toLocaleString(),
        item?.freeBuyingCarcassesWage?.toLocaleString(),
        item?.freeBuyingLiveWage?.toLocaleString(),
        parseInt(Math.floor(item?.totalWage / 1000) * 1000)?.toLocaleString(),
        parseInt(
          Math.floor(item?.totalPaidWage / 1000) * 1000
        )?.toLocaleString(),
        parseInt(
          Math.floor(item?.totalUnpaidWage / 1000) * 1000
        )?.toLocaleString(),
      ];
    });
    return (
      <IconButton
        size="small"
        color="success"
        onClick={() => {
          dispatch(
            OPEN_MODAL({
              title: "سهم بندی تعرفه کشتارگاه " + name,
              size: 1000,
              content: (
                <Grid container xs={12} justifyContent="center">
                  <SimpleTable
                    data={d}
                    columns={[
                      "ردیف",
                      "سهم",
                      `${
                        provincePaymentByWeightOverview?.wageInfo
                          ?.wageCountingType === "live"
                          ? "تعرفه کشتار داخل استان (ریال)"
                          : " تعرفه توزیع لاشه داخل استان (ریال)"
                      }`,
                      "تعرفه خریدهای بازگشتی (ریال)",
                      "تعرفه توزیع لاشه خارج استان (ریال)",
                      "تعرفه لاشه ورودی به استان (ریال)",
                      "تعرفه مرغ زنده ورودی به استان (ریال)",
                      "تعرفه کل (ریال)",
                      "تعرفه پرداخت شده (ریال)",
                      "تعرفه پرداخت نشده (ریال)",
                    ]}
                  />
                </Grid>
              ),
            })
          );
        }}
      >
        <VisibilityIcon fontSize="small" />
      </IconButton>
    );
  };

  useEffect(() => {
    if (getRoleFromUrl() !== "KillHouse" && provincePaymentByWeightOverview) {
      dispatch(
        provinceGetWagesOfKillhousesService({
          date1: withDate ? selectedDate1 : null,
          date2: withDate ? selectedDate2 : null,
          role_key: checkPathStartsWith("province")
            ? selectedSubUser?.key || ""
            : "",
        })
      ).then((r) => {
        const d = r.payload.data?.map((item, i) => {
          if (
            provincePaymentByWeightOverview?.wageInfo?.wageCountingType ===
            "live"
          ) {
            return [
              i + 1,
              item?.name,
              Math.ceil(item?.wageInfo?.totalWage)?.toLocaleString(),
              getKillHouseShares(item?.shares, item?.name),
              Math.ceil(item?.wageInfo?.totalPaidWage)?.toLocaleString(),
              Math.ceil(item?.wageInfo?.off)?.toLocaleString(),
              Math.ceil(item?.wageInfo?.totalUnpaidWage)?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.totalProvinceLiveWeight
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.provinceKillRequestsTotalWage
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.freeBarsOutProvinceCarcasesTotalWeight
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.freeBarsOutProvinceCarcasesTotalWage
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.freeBarsCarcasesTotalWeight
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.freeBarsCarcasesTotalWage
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.freeBarsLiveTotalWeight
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.freeBarsLiveTotalWage
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.returnTotalProvinceLiveWeight
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.totalReturnPureProvinceCarcassesPrice
              )?.toLocaleString(),
              <IconButton
                key={i}
                size="small"
                color="success"
                onClick={() => {
                  navigate(
                    getRoleFromUrl() === "ProvinceOperator"
                      ? ROUTE_PROVINCE_ROUTE_KILLERS_WAGES + "/" + item?.key
                      : getRoleFromUrl() === "SuperAdmin"
                      ? ROUTE_SUPER_ADMIN_ROUTE_KILLERS_WAGES + "/" + item?.key
                      : ROUTE_ADMINX_ROUTE_KILLERS_WAGES + "/" + item?.key
                  );
                }}
              >
                <VisibilityIcon fontSize="small" />
              </IconButton>,
            ];
          } else {
            return [
              i + 1,
              item?.name,
              Math.ceil(item?.wageInfo?.totalWage)?.toLocaleString(),
              getKillHouseShares(item?.shares, item?.name),
              Math.ceil(item?.wageInfo?.totalPaidWage)?.toLocaleString(),
              Math.ceil(item?.wageInfo?.off)?.toLocaleString(),
              Math.ceil(item?.wageInfo?.totalUnpaidWage)?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.totalProvinceLiveWeight
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.totalProvinceCarcassesWeight
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.provinceKillRequestsTotalWeight
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.provinceKillRequestsTotalWage
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.freeBarsOutProvinceCarcasesTotalWeight
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.freeBarsOutProvinceCarcasesTotalWage
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.freeBarsCarcasesTotalWeight
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.freeBarsCarcasesTotalWage
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.freeBarsLiveTotalWeight
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.freeBarsLiveTotalWage
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.returnTotalProvinceLiveWeight
              )?.toLocaleString(),
              Math.ceil(
                item?.wageInfo?.totalReturnPureProvinceCarcassesPrice
              )?.toLocaleString(),
              <IconButton
                key={i}
                size="small"
                color="success"
                onClick={() => {
                  navigate(
                    getRoleFromUrl() === "ProvinceOperator"
                      ? ROUTE_PROVINCE_ROUTE_KILLERS_WAGES + "/" + item?.key
                      : getRoleFromUrl() === "SuperAdmin"
                      ? ROUTE_SUPER_ADMIN_ROUTE_KILLERS_WAGES + "/" + item?.key
                      : ROUTE_ADMINX_ROUTE_KILLERS_WAGES + "/" + item?.key
                  );
                }}
              >
                <VisibilityIcon fontSize="small" />
              </IconButton>,
            ];
          }
        });

        setTableDataOfWages(d);
      });
    }
  }, [
    dispatch,
    provincePaymentByWeightOverview,
    selectedDate1,
    selectedDate2,
    withDate,
  ]);

  const getWageDetailsColumns = () => {
    if (
      provincePaymentByWeightOverview?.wageInfo?.wageCountingType === "live"
    ) {
      return [
        "وزن کل فروش زنده به خارج استان",
        "تعرفه کل فروش به خارج استان (ریال)",
        "کل وزن زنده کشتار داخل استان (کیلوگرم)",
        "تعرفه کشتار داخل استان (ریال)",
        "وزن توزیع لاشه به خارج استان (کیلوگرم)",
        "تعرفه توزیع لاشه خارج استان (ریال)",
        "وزن لاشه ورودی به استان (کیلوگرم)",
        "تعرفه لاشه ورودی به استان (ریال)",
        "وزن مرغ زنده ورودی به استان (کیلوگرم)",
        "تعرفه مرغ زنده ورودی به استان (ریال)",
        "وزن خریدهای بازگشتی (کیلوگرم)",
        "تعرفه خریدهای بازگشتی (ریال)",
      ];
    } else {
      return [
        "وزن کل فروش زنده به خارج استان",
        "تعرفه کل فروش به خارج استان (ریال)",
        "کل وزن زنده کشتار داخل استان (کیلوگرم)",
        "وزن لاشه کشتار داخل استان (کیلوگرم)",
        "وزن توزیع لاشه داخل استان (کیلوگرم)",
        "تعرفه توزیع لاشه داخل استان (ریال)",
        "وزن توزیع لاشه به خارج استان (کیلوگرم)",
        "تعرفه توزیع لاشه خارج استان (ریال)",
        "وزن لاشه ورودی به استان (کیلوگرم)",
        "تعرفه لاشه ورودی به استان (ریال)",
        "وزن مرغ زنده ورودی به استان (کیلوگرم)",
        "تعرفه مرغ زنده ورودی به استان (ریال)",
        "وزن خریدهای بازگشتی (کیلوگرم)",
        "تعرفه خریدهای بازگشتی (ریال)",
      ];
    }
  };

  const getDetailsKillhouseColumns = () => {
    if (
      provincePaymentByWeightOverview?.wageInfo?.wageCountingType === "live"
    ) {
      return [
        "کل تعرفه (ریال)",
        "کل تعرفه پرداخت شده (ریال)",
        "تخفیف (ریال)",
        "کل تعرفه پرداخت نشده (ریال)",
        "کل وزن زنده کشتار داخل استان (کیلوگرم)",
        "تعرفه کشتار داخل استان (ریال)",
        "وزن توزیع لاشه به خارج استان (کیلوگرم)",
        "تعرفه توزیع لاشه خارج استان (ریال)",
        "وزن لاشه ورودی به استان (کیلوگرم)",
        "تعرفه لاشه ورودی به استان (ریال)",
        "وزن مرغ زنده ورودی به استان (کیلوگرم)",
        "تعرفه مرغ زنده ورودی به استان (ریال)",
      ];
    } else {
      return [
        "کل تعرفه (ریال)",
        "کل تعرفه پرداخت شده (ریال)",
        "تخفیف (ریال)",
        "کل تعرفه پرداخت نشده (ریال)",
        "کل وزن زنده کشتار داخل استان (کیلوگرم)",
        "وزن لاشه کشتار داخل استان (کیلوگرم)",
        "وزن توزیع لاشه داخل استان (کیلوگرم)",
        "تعرفه توزیع لاشه داخل استان (ریال)",
        "وزن توزیع لاشه به خارج استان (کیلوگرم)",
        "تعرفه توزیع لاشه خارج استان (ریال)",
        "وزن لاشه ورودی به استان (کیلوگرم)",
        "تعرفه لاشه ورودی به استان (ریال)",
        "وزن مرغ زنده ورودی به استان (کیلوگرم)",
        "تعرفه مرغ زنده ورودی به استان (ریال)",
      ];
    }
  };

  const getDetailsAllKillhousesColumns = () => {
    if (
      provincePaymentByWeightOverview?.wageInfo?.wageCountingType === "live"
    ) {
      return [
        "ردیف",
        "کشتارگاه",
        "کل تعرفه (ریال)",
        "سهم بندی",
        "کل تعرفه پرداخت شده (ریال)",
        "تخفیف (ریال)",
        "کل تعرفه پرداخت نشده (ریال)",
        "کل وزن زنده کشتار داخل استان (کیلوگرم)",
        "تعرفه کشتار داخل استان (ریال)",
        "وزن توزیع لاشه به خارج استان (کیلوگرم)",
        "تعرفه توزیع لاشه خارج استان (ریال)",
        "وزن لاشه ورودی به استان (کیلوگرم)",
        "تعرفه لاشه ورودی به استان (ریال)",
        "وزن مرغ زنده ورودی به استان (کیلوگرم)",
        "تعرفه مرغ زنده ورودی به استان (ریال)",
        "وزن خریدهای بازگشتی (کیلوگرم)",
        "تعرفه خریدهای بازگشتی (ریال)",
        "کشتارکن",
      ];
    } else {
      return [
        "ردیف",
        "کشتارگاه",
        "کل تعرفه (ریال)",
        "سهم بندی",
        "کل تعرفه پرداخت شده (ریال)",
        "تخفیف (ریال)",
        "کل تعرفه پرداخت نشده (ریال)",
        "کل وزن زنده کشتار داخل استان (کیلوگرم)",
        "وزن لاشه کشتار داخل استان (کیلوگرم)",
        "وزن توزیع لاشه داخل استان (کیلوگرم)",
        "تعرفه توزیع لاشه داخل استان (ریال)",
        "وزن توزیع لاشه به خارج استان (کیلوگرم)",
        "تعرفه توزیع لاشه خارج استان (ریال)",
        "وزن لاشه ورودی به استان (کیلوگرم)",
        "تعرفه لاشه ورودی به استان (ریال)",
        "وزن مرغ زنده ورودی به استان (کیلوگرم)",
        "تعرفه مرغ زنده ورودی به استان (ریال)",
        "وزن خریدهای بازگشتی (کیلوگرم)",
        "تعرفه خریدهای بازگشتی (ریال)",
        "کشتارکن",
      ];
    }
  };

  const getDetailsKillhouseData = () => {
    if (
      provincePaymentByWeightOverview?.wageInfo?.wageCountingType === "live"
    ) {
      return [
        [
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.totalWage
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.totalPaidWage
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.off
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.totalUnpaidWage
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.totalProvinceLiveWeight
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo
              ?.provinceKillRequestsTotalWage
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo
              ?.freeBarsOutProvinceCarcasesTotalWeight
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo
              ?.freeBarsOutProvinceCarcasesTotalWage
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo
              ?.freeBarsCarcasesTotalWeight
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.freeBarsCarcasesTotalWage
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.freeBarsLiveTotalWeight
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.freeBarsLiveTotalWage
          )?.toLocaleString(),
        ],
      ];
    } else {
      return [
        [
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.totalWage
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.totalPaidWage
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.off
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.totalUnpaidWage
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.totalProvinceLiveWeight
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo
              ?.totalProvinceCarcassesWeight
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo
              ?.provinceKillRequestsTotalWeight
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo
              ?.provinceKillRequestsTotalWage
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo
              ?.freeBarsOutProvinceCarcasesTotalWeight
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo
              ?.freeBarsOutProvinceCarcasesTotalWage
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo
              ?.freeBarsCarcasesTotalWeight
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.freeBarsCarcasesTotalWage
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.freeBarsLiveTotalWeight
          )?.toLocaleString(),
          Math.ceil(
            provincePaymentByWeightOverview?.wageInfo?.freeBarsLiveTotalWage
          )?.toLocaleString(),
        ],
      ];
    }
  };

  return (
    <Grid container justifyContent="center" xs={12} mt={1}>
      <Grid
        container
        gap={1}
        mb={1}
        style={{
          borderStyle: "solid",
          borderWidth: "1px",
          padding: "5px",
          borderRadius: "15px",
          borderColor: "gray",
        }}
        justifyContent={{
          xs: "space-between",
          sm: "left",
        }}
        alignItems="center"
      >
        <Checkbox
          icon={<ToggleOffOutlinedIcon />}
          checkedIcon={<ToggleOnIcon />}
          checked={withDate}
          onChange={() => setWithDate(!withDate)}
          color="primary"
          size="large"
        />
        <Grid sx={{ width: { xs: "39%", sm: "auto" } }}>
          <DatePicker
            disabled={!withDate}
            label="از تاریخ"
            id="date"
            renderInput={(params) => (
              <TextField
                size="small"
                sx={{ width: { xs: "100%", md: "160px" } }}
                {...params}
              />
            )}
            value={selectedDate1}
            onChange={(e) => {
              setSelectedDate1(moment(e).format("YYYY-MM-DD"));
            }}
          />
        </Grid>
        <Grid sx={{ width: { xs: "39%", sm: "auto" } }}>
          <DatePicker
            disabled={!withDate}
            label="تا تاریخ"
            id="date"
            renderInput={(params) => (
              <TextField
                size="small"
                sx={{ width: { xs: "100%", md: "160px" } }}
                {...params}
              />
            )}
            value={selectedDate2}
            onChange={(e) => {
              setSelectedDate2(moment(e).format("YYYY-MM-DD"));
            }}
          />
        </Grid>
      </Grid>

      <Grid isDashboard container justifyContent="center" xs={12} p={2}>
        <Grid container xs={12} justifyContent="space-between" mb={2}>
          {(getRoleFromUrl() === "KillHouse" ||
            getRoleFromUrl() === "ChainCompany") && (
            <Grid>
              <Button
                variant="contained"
                onClick={() => {
                  dispatch(
                    OPEN_MODAL({
                      title: "پرداخت تعرفه",
                      content: <ProvincePaymentPayDept />,
                    })
                  );
                }}
              >
                پرداخت تعرفه
              </Button>
            </Grid>
          )}
          {/* {(getRoleFromUrl() === "KillHouse" ||
                getRoleFromUrl() === "ChainCompany") && (
                <Grid>
                  <Button variant="contained" href="https://zarinp.al/ravandno">
                    پرداخت تعرفه
                  </Button>
                </Grid>
              )} */}
        </Grid>
        <ResponsiveTable
          operation={
            <Grid>
              {(getRoleFromUrl() === "AdminX" ||
                getRoleFromUrl() === "ProvinceOperator" ||
                getRoleFromUrl() === "SuperAdmin") && (
                <Tooltip title="خروجی اکسل" placement="top">
                  <IconButton
                    color="primary"
                    onClick={() => {
                      openNotif({
                        vertical: "top",
                        horizontal: "center",
                        msg: "فایل اکسل در حال دانلود می باشد، این علمیات ممکن است زمان بر باشد لطفا صبر کنید.",
                        severity: "success",
                      });
                      const link = `${
                        axios.defaults.baseURL
                      }kill_house_total_transactions_wage_payid_admin_x_excel/?date1=${selectedDate1}&date2=${selectedDate2}&key=${userKey}&role=${getRoleFromUrl()}${
                        checkPathStartsWith("province")
                          ? `&role_key=${selectedSubUser?.key}`
                          : ""
                      }`;
                      window.location.href = link;
                    }}
                  >
                    <SystemUpdateAltIcon />
                  </IconButton>
                </Tooltip>
              )}
            </Grid>
          }
          isDashboard
          noPagination
          title="اطلاعات کلی تعرفه"
          columns={[
            "کل تعرفه (ریال)",
            "کل تعرفه پرداخت شده (ریال)",
            "تخفیف (ریال)",
            "کل تعرفه پرداخت نشده (ریال)",
          ]}
          data={[
            [
              // Math.ceil(
              //   provincePaymentByWeightOverview?.wageInfo?.totalWeight
              // )?.toLocaleString(),
              Math.ceil(
                provincePaymentByWeightOverview?.wageInfo?.totalWage
              )?.toLocaleString(),
              Math.ceil(
                provincePaymentByWeightOverview?.wageInfo?.totalPaidWage
              )?.toLocaleString(),
              Math.ceil(
                provincePaymentByWeightOverview?.wageInfo?.off
              )?.toLocaleString(),
              Math.ceil(
                provincePaymentByWeightOverview?.wageInfo?.totalUnpaidWage
              )?.toLocaleString(),
            ],
          ]}
        />

        {getRoleFromUrl() !== "KillHouse" && (
          <ResponsiveTable
            noPagination
            title="جزئیات کلی تعرفه"
            columns={getWageDetailsColumns()}
            data={
              provincePaymentByWeightOverview?.wageInfo?.wageCountingType ===
              "live"
                ? [
                    [
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.outProvincePoultryRequestWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.outProvincePoultryRequestWage
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.totalProvinceLiveWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.provinceKillRequestsTotalWage
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.freeBarsOutProvinceCarcasesTotalWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.freeBarsOutProvinceCarcasesTotalWage
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.freeBarsCarcasesTotalWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.freeBarsCarcasesTotalWage
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.freeBarsLiveTotalWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.freeBarsLiveTotalWage
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.returnTotalProvinceLiveWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.totalReturnPureProvinceCarcassesPrice
                      )?.toLocaleString(),
                    ],
                  ]
                : [
                    [
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.outProvincePoultryRequestWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.outProvincePoultryRequestWage
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.totalProvinceLiveWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.totalProvinceCarcassesWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.provinceKillRequestsTotalWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.provinceKillRequestsTotalWage
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.freeBarsOutProvinceCarcasesTotalWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.freeBarsOutProvinceCarcasesTotalWage
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.freeBarsCarcasesTotalWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.freeBarsCarcasesTotalWage
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.freeBarsLiveTotalWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.freeBarsLiveTotalWage
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.returnTotalProvinceLiveWeight
                      )?.toLocaleString(),
                      Math.ceil(
                        provincePaymentByWeightOverview?.wageInfo
                          ?.totalReturnPureProvinceCarcassesPrice
                      )?.toLocaleString(),
                    ],
                  ]
            }
          />
        )}

        {getRoleFromUrl() !== "KillHouse" && (
          <ResponsiveTable
            noPagination
            title="سهم بندی"
            columns={[
              "ردیف",
              "سهم",
              "تعرفه فروش مرغ زنده به خارج استان (ریال)",
              `${
                provincePaymentByWeightOverview?.wageInfo?.wageCountingType ===
                "live"
                  ? "تعرفه کشتار داخل استان (ریال)"
                  : " تعرفه توزیع لاشه داخل استان (ریال)"
              }`,
              "تعرفه توزیع لاشه خارج استان (ریال)",
              "تعرفه لاشه ورودی به استان (ریال)",
              "تعرفه مرغ زنده ورودی به استان (ریال)",
              "تعرفه کل (ریال)",
              "تعرفه پرداخت شده (ریال)",
              "تعرفه پرداخت نشده (ریال)",
            ]}
            data={tableDataShares}
          />
        )}
      </Grid>

      <Grid container justifyContent="center" xs={12} mt={2} mb={2}>
        <ResponsiveTable
          noPagination
          title="مبنای تعرفه به ازای هر کیلوگرم (ریال)"
          columns={[
            "تعرفه پایه فروش مرغ زنده به خارج استان",
            `${
              provincePaymentByWeightOverview?.wageInfo?.wageCountingType ===
              "live"
                ? "تعرفه کشتار داخل استان (ریال)"
                : "تعرفه پایه توزیع لاشه درون استان (ریال)"
            }`,
            "تعرفه پایه توزیع لاشه خارج استان (ریال)",
            "تعرفه پایه خرید مرغ زنده از خارج از استان (ریال)",
            "تعرفه پایه خرید لاشه خارج از استان (ریال)",
            "وزن خریدهای بازگشتی (کیلوگرم)",
            "تعرفه خریدهای بازگشتی (ریال)",
          ]}
          data={[
            [
              provincePaymentByWeightOverview?.wageInfo?.outProvincePoultryRequestWageAmount?.toLocaleString(),
              provincePaymentByWeightOverview?.wageInfo?.provinceLiveWageAmount?.toLocaleString(),
              provincePaymentByWeightOverview?.wageInfo?.freeSellCarcessesWeightAmount?.toLocaleString(),
              provincePaymentByWeightOverview?.wageInfo?.freeBuyingLiveWeightAmount?.toLocaleString(),
              provincePaymentByWeightOverview?.wageInfo?.freeBuyingCarcessesWeightAmount?.toLocaleString(),
              provincePaymentByWeightOverview?.wageInfo?.returnTotalProvinceLiveWeight?.toLocaleString(),
              provincePaymentByWeightOverview?.wageInfo?.totalReturnPureProvinceCarcassesPrice?.toLocaleString(),
            ],
          ]}
        />
      </Grid>

      <Grid container justifyContent="center" xs={12} mt={1}>
        <ResponsiveTable
          noPagination={getRoleFromUrl() === "KillHouse"}
          paginated={getRoleFromUrl() !== "KillHouse"}
          title="جزئیات"
          columns={
            getRoleFromUrl() === "KillHouse"
              ? getDetailsKillhouseColumns()
              : getDetailsAllKillhousesColumns()
          }
          data={
            getRoleFromUrl() === "KillHouse"
              ? getDetailsKillhouseData()
              : tableDataOfWages
          }
        />
      </Grid>

      {getRoleFromUrl() === "KillHouse" && (
        <Accordion style={{ width: "100%", marginTop: "20px" }}>
          <AccordionSummary
            expandIcon={<ArrowDownwardIcon />}
            aria-controls="panel1-content"
            id="panel1-header"
          >
            <Typography variant="body1" style={{ color: "gray" }}>
              کشتارکن ها
            </Typography>
          </AccordionSummary>
          <AccordionDetails>
            <Grid container justifyContent="center" xs={12} mt={1}>
              <ResponsiveTable
                paginated
                columns={
                  provincePaymentByWeightOverview?.wageInfo
                    ?.wageCountingType === "live"
                    ? [
                        "نام کشتارکن",
                        "کل تعرفه (ریال)",
                        "کل تعرفه پرداخت شده (ریال)",
                        "تخفیف (ریال)",
                        "کل تعرفه پرداخت نشده (ریال)",
                        "لینک پرداخت",
                        "کل وزن زنده کشتار داخل استان (کیلوگرم)",
                        "تعرفه کشتار داخل استان (ریال)",
                        "وزن توزیع لاشه به خارج استان (کیلوگرم)",
                        "تعرفه توزیع لاشه خارج استان (ریال)",
                        "وزن لاشه ورودی به استان (کیلوگرم)",
                        "تعرفه لاشه ورودی به استان (ریال)",
                        "وزن مرغ زنده ورودی به استان (کیلوگرم)",
                        "تعرفه مرغ زنده ورودی به استان (ریال)",
                      ]
                    : [
                        "نام کشتارکن",
                        "کل تعرفه (ریال)",
                        "کل تعرفه پرداخت شده (ریال)",
                        "تخفیف (ریال)",
                        "کل تعرفه پرداخت نشده (ریال)",
                        "لینک پرداخت",
                        "کل وزن زنده کشتار داخل استان (کیلوگرم)",
                        "وزن لاشه کشتار داخل استان (کیلوگرم)",
                        "وزن توزیع لاشه داخل استان (کیلوگرم)",
                        "تعرفه توزیع لاشه داخل استان (ریال)",
                        "وزن توزیع لاشه به خارج استان (کیلوگرم)",
                        "تعرفه توزیع لاشه خارج استان (ریال)",
                        "وزن لاشه ورودی به استان (کیلوگرم)",
                        "تعرفه لاشه ورودی به استان (ریال)",
                        "وزن مرغ زنده ورودی به استان (کیلوگرم)",
                        "تعرفه مرغ زنده ورودی به استان (ریال)",
                      ]
                }
                data={tableData}
              />
            </Grid>
          </AccordionDetails>
        </Accordion>
      )}
    </Grid>
  );
};
