Merge branch 'Purchase_Invoice_Management' of https://git.marcoaiot.com/admin/marco.pms.web into Finance_Export_Functionality

This commit is contained in:
Kartik Sharma 2025-12-03 12:14:41 +05:30
commit 8fc49ab4a7
23 changed files with 137 additions and 119 deletions

View File

@ -147,13 +147,13 @@ const TaskReportList = () => {
data-bs-placement="left" data-bs-placement="left"
data-bs-html="true" data-bs-html="true"
data-bs-content={` data-bs-content={`
<div class="border border-secondary rounded custom-popover p-2 px-3"> <div className="border border-secondary rounded custom-popover p-2 px-3">
${task.teamMembers ${task.teamMembers
.map( .map(
(m) => ` (m) => `
<div class="d-flex align-items-center gap-2 mb-2"> <div className="d-flex align-items-center gap-2 mb-2">
<div class="avatar avatar-xs"> <div className="avatar avatar-xs">
<span class="avatar-initial rounded-circle bg-label-primary"> <span className="avatar-initial rounded-circle bg-label-primary">
${m?.firstName?.charAt(0) || ""}${m?.lastName?.charAt(0) || "" ${m?.firstName?.charAt(0) || ""}${m?.lastName?.charAt(0) || ""
} }
</span> </span>

View File

@ -119,7 +119,7 @@ export const FileView = ({ file, viewFile }) => {
<span className="text-muted small text-truncate mb-n4"> <span className="text-muted small text-truncate mb-n4">
{file.fileName} {file.fileName}
</span> </span>
<span className="text-body-secondary small"> <span className="text-body-secondary small mt-2">
<Tooltip text={"Click on file"}> <Tooltip text={"Click on file"}>
{" "} {" "}
{file.fileSize ? formatFileSize(file.fileSize) : ""} {file.fileSize ? formatFileSize(file.fileSize) : ""}

View File

@ -110,7 +110,7 @@ const PreviewDocument = ({ files = [] }) => {
</div> </div>
<div <div
onWheel={handleWheel} // onWheel={handleWheel}
onMouseDown={handleMouseDown} onMouseDown={handleMouseDown}
onMouseMove={handleMouseMove} onMouseMove={handleMouseMove}
onMouseUp={handleMouseUp} onMouseUp={handleMouseUp}

View File

@ -43,7 +43,7 @@ const OrgPickerfromTenant = ({ title }) => {
label: "Name", label: "Name",
getValue: (org) => ( getValue: (org) => (
<div className="d-flex gap-2 py-1 "> <div className="d-flex gap-2 py-1 ">
<i class="bx bx-buildings"></i> <i className="bx bx-buildings"></i>
<span <span
className="text-truncate d-inline-block " className="text-truncate d-inline-block "
style={{ maxWidth: "150px" }} style={{ maxWidth: "150px" }}
@ -126,7 +126,7 @@ const OrgPickerfromTenant = ({ title }) => {
onOpen({ startStep: 3, orgData: row }) onOpen({ startStep: 3, orgData: row })
} }
> >
<i class='bx bx-right-arrow-circle text-primary'></i> <i className='bx bx-right-arrow-circle text-primary'></i>
</span> </span>
</div> </div>
</td> </td>

View File

@ -191,16 +191,16 @@ const ActionPaymentRequest = ({ requestId }) => {
{IsPaymentProcess && nextStatusWithPermission?.length > 0 && ( {IsPaymentProcess && nextStatusWithPermission?.length > 0 && (
<> <>
{isProccesed ? ( {isProccesed ? (
<div class="accordion-item active shadow-none"> <div className="accordion-item active shadow-none">
<h2 class="accordion-header d-flex align-items-center"> <h2 className="accordion-header d-flex align-items-center">
<button <button
type="button" type="button"
class="accordion-button" className="accordion-button"
data-bs-toggle="collapse" data-bs-toggle="collapse"
data-bs-target="#accordionWithIcon-1" data-bs-target="#accordionWithIcon-1"
aria-expanded="true" aria-expanded="true"
> >
<i class="icon-base bx bx-receipt me-2"></i> <i className="icon-base bx bx-receipt me-2"></i>
Make Expense Make Expense
</button> </button>
</h2> </h2>

View File

@ -307,7 +307,7 @@ const PaymentRequestList = ({ filters, filterData, removeFilterChip, clearFilter
data-bs-toggle="tooltip" data-bs-toggle="tooltip"
data-bs-offset="0,8" data-bs-offset="0,8"
data-bs-placement="top" data-bs-placement="top"
data-bs-custom-class="tooltip-dark" data-bs-custom-className="tooltip-dark"
title="More Action" title="More Action"
></i> ></i>
</button> </button>

View File

@ -15,7 +15,7 @@ const ProjectAssignedOrgs = () => {
label: "Organization Name", label: "Organization Name",
getValue: (org) => ( getValue: (org) => (
<div className="d-flex gap-2 py-1 "> <div className="d-flex gap-2 py-1 ">
<i class="bx bx-buildings"></i> <i className="bx bx-buildings"></i>
<span <span
className="text-truncate d-inline-block " className="text-truncate d-inline-block "
style={{ maxWidth: "150px" }} style={{ maxWidth: "150px" }}

View File

@ -241,7 +241,7 @@ const EditMaster = ({ master, onClose }) => {
data-bs-trigger="focus" data-bs-trigger="focus"
data-bs-placement="right" data-bs-placement="right"
data-bs-html="true" data-bs-html="true"
data-bs-content={`<div class="border border-secondary rounded custom-popover p-2 px-3">${perm.description}</div>`} data-bs-content={`<div className="border border-secondary rounded custom-popover p-2 px-3">${perm.description}</div>`}
> >
&nbsp; &nbsp;
<svg <svg

View File

@ -4,7 +4,7 @@ import { SpinnerLoader } from "../common/Loader";
import { formatUTCToLocalTime } from "../../utils/dateUtils"; import { formatUTCToLocalTime } from "../../utils/dateUtils";
import { FileView } from "../Expenses/Filelist"; import { FileView } from "../Expenses/Filelist";
const DeliverChallanList = ({ purchaseId }) => { const DeliverChallanList = ({ purchaseId, viewDocuments }) => {
const { data, isLoading, isError, error } = useDeliverChallane(purchaseId); const { data, isLoading, isError, error } = useDeliverChallane(purchaseId);
if (isLoading) { if (isLoading) {
return ( return (
@ -56,7 +56,7 @@ const DeliverChallanList = ({ purchaseId }) => {
</p> </p>
{item.attachment?.preSignedUrl && ( {item.attachment?.preSignedUrl && (
<FileView file={item.attachment} /> <FileView file={item.attachment} viewFile={viewDocuments} />
)} )}
</div> </div>
</div> </div>

View File

@ -21,9 +21,11 @@ import SingleFileUploader from "../common/SigleFileUploader";
import { localToUtc } from "../../utils/appUtils"; import { localToUtc } from "../../utils/appUtils";
import WarningBlock from "../InfoBlock/WarningBlock"; import WarningBlock from "../InfoBlock/WarningBlock";
import { FILE_UPLOAD_INFO } from "../../utils/staticContent"; import { FILE_UPLOAD_INFO } from "../../utils/staticContent";
import { usePurchaseContext } from "../../pages/purchase/PurchasePage";
const DeliveryChallane = ({ purchaseId }) => { const DeliveryChallane = ({ purchaseId }) => {
const [file, setFile] = useState(null); const [file, setFile] = useState(null);
const {setDocumentView} = usePurchaseContext()
const { const {
register, register,
@ -174,14 +176,16 @@ const DeliveryChallane = ({ purchaseId }) => {
/> />
<div className="col-12 text-end my-3"> <div className="col-12 text-end my-3">
<button type="submit" className="btn btn-sm btn-primary px-4"> <button
type="submit"
className="btn btn-sm btn-primary px-4"
disabled={isPending}
>
{isPending ? "Please Wait..." : "Submit"} {isPending ? "Please Wait..." : "Submit"}
</button> </button>
</div> </div>
</form> </form>
{!isUploaded && ( {!isUploaded && <WarningBlock content={FILE_UPLOAD_INFO} />}
<WarningBlock content={FILE_UPLOAD_INFO} />
)}
</div> </div>
<div className="col-md-6 text-start"> <div className="col-md-6 text-start">
@ -190,7 +194,7 @@ const DeliveryChallane = ({ purchaseId }) => {
<p className="fw-medium mb-0">History</p> <p className="fw-medium mb-0">History</p>
</div> </div>
<div className="overflow-auto " style={{ maxHeight: "420px" }}> <div className="overflow-auto " style={{ maxHeight: "420px" }}>
<DeliverChallanList purchaseId={purchaseId} /> <DeliverChallanList purchaseId={purchaseId} viewDocuments={setDocumentView} />
</div> </div>
</div> </div>
</div> </div>

View File

@ -123,7 +123,16 @@ const PurchaseList = ({ searchString, isActive }) => {
data?.data?.map((item, index) => ( data?.data?.map((item, index) => (
<tr key={item?.id || index}> <tr key={item?.id || index}>
{visibleColumns.map((col) => ( {visibleColumns.map((col) => (
<td key={col.key} className={col.className || ""}> <td
key={col.key}
className={`${col.className} cursor-pointer` || ""}
onClick={() =>
setViewPurchase({
isOpen: true,
purchaseId: item.id,
})
}
>
{col.render ? col.render(item) : item[col.key] || "NA"} {col.render ? col.render(item) : item[col.key] || "NA"}
</td> </td>
))} ))}

View File

@ -93,16 +93,6 @@ const PurchasePayment = ({onClose, purchaseId }) => {
size="md" size="md"
name="paymentReceivedDate" name="paymentReceivedDate"
control={control} control={control}
minDate={
Purchase?.createdAt
? new Date(
new Date(Purchase?.createdAt).setDate(
new Date(Purchase?.createdAt).getDate() + 1
)
)
: null
}
maxDate={new Date()}
/> />
{errors.paymentReceivedDate && ( {errors.paymentReceivedDate && (
<small className="danger-text"> <small className="danger-text">
@ -283,9 +273,10 @@ const PurchasePayment = ({onClose, purchaseId }) => {
{data?.length === 0 && ( {data?.length === 0 && (
<div className="d-flex justify-content-center algin-items-center text-center"> <div className="d-flex justify-content-center algin-items-center text-center">
<div> <div>
<i className="bx bx-box"></i>
<i className='bx bx-box'></i> <p className="text-secondary">
<p className="text-secondary">You don't have any payment yet.</p> You don't have any payment yet.
</p>
</div> </div>
</div> </div>
)} )}

View File

@ -38,11 +38,11 @@ const ViewPurchase = ({ purchaseId }) => {
<p className="fw-semibold mb-3">Purchase Details</p> <p className="fw-semibold mb-3">Purchase Details</p>
<div className="row mb-3"> <div className="row mb-3">
<div className="col-md-6"> <div className="col-md-6">
<p className="text-secondary mb-0"><i class='bx bx-captions bx-sm me-1'></i>Title:</p> <p className="text-secondary mb-0"><i className='bx bx-captions bx-sm me-1'></i>Title:</p>
<p className="fw-light mb-1">{data?.title}</p> <p className="fw-light mb-1">{data?.title}</p>
</div> </div>
<div className="col-md-6"> <div className="col-md-6">
<p className="text-secondary mb-0"><i class='bx bx-comment-detail bx-sm me-1'></i>Description:</p> <p className="text-secondary mb-0"><i className='bx bx-comment-detail bx-sm me-1'></i>Description:</p>
<p className="fw-light mb-1 ">{data?.description}</p> <p className="fw-light mb-1 ">{data?.description}</p>
</div> </div>
</div> </div>
@ -56,31 +56,31 @@ const ViewPurchase = ({ purchaseId }) => {
<div className="row text-start h-auto"> <div className="row text-start h-auto">
{/* Project Name */} {/* Project Name */}
<div className="col-12 col-md-4 mb-3"> <div className="col-12 col-md-4 mb-3">
<p className="text-secondary mb-0"><i class='bx bx-captions bx-sm me-1'></i>Project Name:</p> <p className="text-secondary mb-0"><i className='bx bx-captions bx-sm me-1'></i>Project Name:</p>
<p className="fw-light mb-0">{data?.project?.name}</p> <p className="fw-light mb-0">{data?.project?.name}</p>
</div> </div>
{/* Organization Name */} {/* Organization Name */}
<div className="col-12 col-md-4 mb-3"> <div className="col-12 col-md-4 mb-3">
<p className="text-secondary mb-0"><i class='bx bxs-component bx-sm me-1'></i>Organization:</p> <p className="text-secondary mb-0"><i className='bx bxs-component bx-sm me-1'></i>Organization:</p>
<p className="fw-light mb-0">{data?.organization?.name}</p> <p className="fw-light mb-0">{data?.organization?.name}</p>
</div> </div>
{/* Email */} {/* Email */}
<div className="col-12 col-md-4 mb-3"> <div className="col-12 col-md-4 mb-3">
<p className="text-secondary mb-0"><i class='bx bx-envelope me-1 bx-sm'></i>Email:</p> <p className="text-secondary mb-0"><i className='bx bx-envelope me-1 bx-sm'></i>Email:</p>
<p className="fw-light mb-0">{data?.organization?.email}</p> <p className="fw-light mb-0">{data?.organization?.email}</p>
</div> </div>
{/* Contact Number */} {/* Contact Number */}
<div className="col-12 col-md-4 mb-3"> <div className="col-12 col-md-4 mb-3">
<p className="text-secondary mb-0"><i class='bx bxs-contact bx-sm me-1' ></i>Contact:</p> <p className="text-secondary mb-0"><i className='bx bxs-contact bx-sm me-1' ></i>Contact:</p>
<p className="fw-light mb-0">{data?.organization?.contactNumber}</p> <p className="fw-light mb-0">{data?.organization?.contactNumber}</p>
</div> </div>
{/* Address */} {/* Address */}
<div className="col-12 mb-3"> <div className="col-12 mb-3">
<p className="text-secondary mb-0"><i class='bx bx-message-square-detail bx-sm me-1'></i>Address:</p> <p className="text-secondary mb-0"><i className='bx bx-message-square-detail bx-sm me-1'></i>Address:</p>
<p className="fw-light mb-0">{data?.organization?.address}</p> <p className="fw-light mb-0">{data?.organization?.address}</p>
</div> </div>
</div> </div>
@ -93,31 +93,31 @@ const ViewPurchase = ({ purchaseId }) => {
{/* Supplier Name */} {/* Supplier Name */}
<div className="col-12 col-md-4 mb-3"> <div className="col-12 col-md-4 mb-3">
<p className="text-secondary mb-0"><i class='bx bx-captions bx-sm me-1'></i>Name:</p> <p className="text-secondary mb-0"><i className='bx bx-captions bx-sm me-1'></i>Name:</p>
<p className="fw-light mb-0">{data?.supplier?.name}</p> <p className="fw-light mb-0">{data?.supplier?.name}</p>
</div> </div>
{/* Contact Person */} {/* Contact Person */}
<div className="col-12 col-md-4 mb-3"> <div className="col-12 col-md-4 mb-3">
<p className="text-secondary mb-0"><i class='bx bx-support bx-sm me-1'></i>Contact Person:</p> <p className="text-secondary mb-0"><i className='bx bx-support bx-sm me-1'></i>Contact Person:</p>
<p className="fw-light mb-0">{data?.supplier?.contactPerson}</p> <p className="fw-light mb-0">{data?.supplier?.contactPerson}</p>
</div> </div>
{/* Email */} {/* Email */}
<div className="col-12 col-md-4 mb-3"> <div className="col-12 col-md-4 mb-3">
<p className="text-secondary mb-0"><i class='bx bx-envelope me-1 bx-sm'></i>Email:</p> <p className="text-secondary mb-0"><i className='bx bx-envelope me-1 bx-sm'></i>Email:</p>
<p className="fw-light mb-0">{data?.supplier?.email}</p> <p className="fw-light mb-0">{data?.supplier?.email}</p>
</div> </div>
{/* Contact Number */} {/* Contact Number */}
<div className="col-12 col-md-4 mb-3"> <div className="col-12 col-md-4 mb-3">
<p className="text-secondary mb-0"><i class='bx bxs-contact bx-sm me-1' ></i>Contact:</p> <p className="text-secondary mb-0"><i className='bx bxs-contact bx-sm me-1' ></i>Contact:</p>
<p className="fw-light mb-0">{data?.supplier?.contactNumber}</p> <p className="fw-light mb-0">{data?.supplier?.contactNumber}</p>
</div> </div>
{/* Address */} {/* Address */}
<div className="col-12 mb-3"> <div className="col-12 mb-3">
<p className="text-secondary mb-0"><i class='bx bx-message-square-detail bx-sm me-1'></i>Address:</p> <p className="text-secondary mb-0"><i className='bx bx-message-square-detail bx-sm me-1'></i>Address:</p>
<p className="fw-light mb-0">{data?.supplier?.address}</p> <p className="fw-light mb-0">{data?.supplier?.address}</p>
</div> </div>
</div> </div>

View File

@ -24,25 +24,25 @@ const AuthLayout = () => {
> >
{" "} {" "}
<nav <nav
class="navbar navbar-light ms-10 w-auto justify-content-start" className="navbar navbar-light ms-10 w-auto justify-content-start"
style={{ opacity: "100%" }} style={{ opacity: "100%" }}
> >
<a class="navbar-brand" href="/"> <a className="navbar-brand" href="/">
Home Home
</a> </a>
<a class="navbar-brand" href="/#landingFeatures"> <a className="navbar-brand" href="/#landingFeatures">
Features Features
</a> </a>
<a class="navbar-brand" href="/#landingPricing"> <a className="navbar-brand" href="/#landingPricing">
Pricing Pricing
</a> </a>
<a class="navbar-brand" href="/#landingFAQ"> <a className="navbar-brand" href="/#landingFAQ">
FAQ FAQ
</a> </a>
<a class="navbar-brand" href="/#sectionBlog"> <a className="navbar-brand" href="/#sectionBlog">
Blogs Blogs
</a> </a>
<a class="navbar-brand" href="/#landingCTA"> <a className="navbar-brand" href="/#landingCTA">
Contact Us Contact Us
</a> </a>
</nav>{" "} </nav>{" "}

View File

@ -10,7 +10,7 @@ const FeatureCard = ({ imagesrc, title, description }) => {
alt={title} alt={title}
className="w-14 mb-4 feature-icon-image" className="w-14 mb-4 feature-icon-image"
/> />
<span class="ms-5"> <span className="ms-5">
<h5>{title}</h5> <h5>{title}</h5>
</span> </span>
</div> </div>

View File

@ -67,14 +67,14 @@ const LandingPageOld = () => {
<a <a
href="/" href="/"
class="app-brand-link fw-bold navbar-brand text-green fs-5" className="app-brand-link fw-bold navbar-brand text-green fs-5"
> >
<span class="app-brand-logo demo"> <span className="app-brand-logo demo">
<img src="/img/brand/marco.png" width="50" /> <img src="/img/brand/marco.png" width="50" />
</span> </span>
<span class="text-blue">OnField</span> <span className="text-blue">OnField</span>
<span>Work</span> <span>Work</span>
<span class="text-dark">.com</span> <span className="text-dark">.com</span>
</a> </a>
</div> </div>
{/* Menu logo wrapper: End */} {/* Menu logo wrapper: End */}
@ -404,11 +404,11 @@ const LandingPageOld = () => {
{/* <!-- Real blog/ case studies: Start --> */} {/* <!-- Real blog/ case studies: Start --> */}
<section <section
id="sectionBlog" id="sectionBlog"
class="section-py bg-body landing-reviews pb-0" className="section-py bg-body landing-reviews pb-0"
hidden hidden
> >
{/* <!-- What people say slider: Start --> */} {/* <!-- What people say slider: Start --> */}
<div class="container"> <div className="container">
<div className="text-center mb-4"> <div className="text-center mb-4">
<span className="badge bg-label-primary heading"> <span className="badge bg-label-primary heading">
Case Studies Case Studies
@ -430,8 +430,8 @@ const LandingPageOld = () => {
See the transformations our clients have achieved with us See the transformations our clients have achieved with us
</p> </p>
<div class="row"> <div className="row">
<div class="swiper-reviews-carousel"> <div className="swiper-reviews-carousel">
<Swiper <Swiper
onSwiper={setSwiperRef} onSwiper={setSwiperRef}
slidesPerView={4} slidesPerView={4}

View File

@ -5,37 +5,37 @@ const SwaperBlogContent = ({
ContentAlign = "right", ContentAlign = "right",
}) => { }) => {
return ( return (
<div class="swiper-slide"> <div className="swiper-slide">
<div class="card h-100"> <div className="card h-100">
<div class="card-body text-body d-flex flex-column justify-content-between h-100"> <div className="card-body text-body d-flex flex-column justify-content-between h-100">
<div class="mb-4"> <div className="mb-4">
<img <img
src={ImageUrl} src={ImageUrl}
alt="client logo" alt="client logo"
class="client-logo img-fluid" className="client-logo img-fluid"
style={{ width: "580px", height: "100px" }} style={{ width: "580px", height: "100px" }}
/> />
<h5>{Title}</h5> <h5>{Title}</h5>
</div> </div>
<p>{Body}</p> <p>{Body}</p>
<div class="text-warning mb-4"> <div className="text-warning mb-4">
<i class="bx bxs-star"></i> <i className="bx bxs-star"></i>
<i class="bx bxs-star"></i> <i className="bx bxs-star"></i>
<i class="bx bxs-star"></i> <i className="bx bxs-star"></i>
<i class="bx bxs-star"></i> <i className="bx bxs-star"></i>
<i class="bx bxs-star"></i> <i className="bx bxs-star"></i>
</div> </div>
<div class="d-flex align-items-center"> <div className="d-flex align-items-center">
<div class="avatar me-3 avatar-sm"> <div className="avatar me-3 avatar-sm">
<img <img
src="../../assets/img/avatars/1.png" src="../../assets/img/avatars/1.png"
alt="Avatar" alt="Avatar"
class="rounded-circle" className="rounded-circle"
/> />
</div> </div>
<div> <div>
<h6 class="mb-0">Cecilia Payne</h6> <h6 className="mb-0">Cecilia Payne</h6>
<p class="small text-muted mb-0">CEO of Airbnb</p> <p className="small text-muted mb-0">CEO of Airbnb</p>
</div> </div>
</div> </div>
</div> </div>

View File

@ -59,10 +59,10 @@ const ForgotPasswordPage = () => {
<div className="d-flex align-items-center justify-content-center "> <div className="d-flex align-items-center justify-content-center ">
<img src="/img/brand/marco.png" width="70" /> <img src="/img/brand/marco.png" width="70" />
<Link aria-label="Go to Home Page" to="/"> <Link aria-label="Go to Home Page" to="/">
<span class="app-brand-logo "> <span className="app-brand-logo ">
<span class="text-blue fs-4">OnField</span> <span className="text-blue fs-4">OnField</span>
<span className="text-green fs-4">Work</span> <span className="text-green fs-4">Work</span>
<span class="text-dark fs-4">.com</span> <span className="text-dark fs-4">.com</span>
</span> </span>
<br /> <br />
</Link> </Link>

View File

@ -90,16 +90,16 @@ const LoginPage = () => {
<div className="col-12 col-lg-5 col-xl-4 d-flex align-items-top p-4 p-sm-5 bg-gray-60"> <div className="col-12 col-lg-5 col-xl-4 d-flex align-items-top p-4 p-sm-5 bg-gray-60">
<div className="w-100 mt-10" style={{ maxWidth: 420, margin: "0 auto" }}> <div className="w-100 mt-10" style={{ maxWidth: 420, margin: "0 auto" }}>
<Link aria-label="Go to Home Page" to="/"> <Link aria-label="Go to Home Page" to="/">
<span class="app-brand-logo rounded-circle"> <span className="app-brand-logo rounded-circle">
<img src="/img/brand/marco.png" width="70" /> <img src="/img/brand/marco.png" width="70" />
</span> </span>
<br /> <br />
<span class="text-dark fs-5">Welcome to</span> <br /> <span className="text-dark fs-5">Welcome to</span> <br />
<h4 className="mb-2 "> <h4 className="mb-2 ">
{" "} {" "}
<span class="text-blue ms-1">OnField</span> <span className="text-blue ms-1">OnField</span>
<span className="text-green">Work</span> <span className="text-green">Work</span>
<span class="text-dark">.com</span> <span className="text-dark">.com</span>
</h4> </h4>
</Link> </Link>
<p className="mb-4"> <p className="mb-4">

View File

@ -8,17 +8,17 @@ const MainLogin = () => {
<div className=" d-lg-flex col-lg-7 col-xl-8 align-items-center p-5 justify-content-center"> <div className=" d-lg-flex col-lg-7 col-xl-8 align-items-center p-5 justify-content-center">
{/* <div className="w-75 text-start" style={{ marginTop: "75px" }}> */} {/* <div className="w-75 text-start" style={{ marginTop: "75px" }}> */}
<div <div
class="w-75 text-start swiper-container login-pg-swiper" className="w-75 text-start swiper-container login-pg-swiper"
style={{ marginTop: "75px" }} style={{ marginTop: "75px" }}
> >
<div <div
id="textCarousel" id="textCarousel"
class="carousel slide" className="carousel slide"
data-bs-ride="carousel" data-bs-ride="carousel"
> >
<div class="carousel-inner"> <div className="carousel-inner">
<div class="carousel-item active"> <div className="carousel-item active">
<div class="p-5 text-center"> <div className="p-5 text-center">
<p> <p>
<img <img
className="w-100 login-pg-img-swiper" className="w-100 login-pg-img-swiper"
@ -27,8 +27,8 @@ const MainLogin = () => {
</p> </p>
</div> </div>
</div> </div>
<div class="carousel-item active"> <div className="carousel-item active">
<div class="p-5 text-center"> <div className="p-5 text-center">
<p> <p>
<img <img
className="w-100 login-pg-img-swiper" className="w-100 login-pg-img-swiper"
@ -37,8 +37,8 @@ const MainLogin = () => {
</p> </p>
</div> </div>
</div> </div>
<div class="carousel-item "> <div className="carousel-item ">
<div class="p-5 "> <div className="p-5 ">
<p> <p>
<div className="text-start"> <div className="text-start">
<h3 className="display-header text-black"> <h3 className="display-header text-black">
@ -112,8 +112,8 @@ const MainLogin = () => {
</div> </div>
</div> </div>
<div class="carousel-item"> <div className="carousel-item">
<div class="p-5 text-center "> <div className="p-5 text-center ">
<p className="text-start"> <p className="text-start">
<div className="text-start"> <div className="text-start">
<h1 className="display-header text-black"> <h1 className="display-header text-black">
@ -196,8 +196,8 @@ const MainLogin = () => {
</div> </div>
</div> </div>
<div class="carousel-item"> <div className="carousel-item">
<div class="p-5 text-center "> <div className="p-5 text-center ">
<p className="text-start"> <p className="text-start">
<div className="text-start"> <div className="text-start">
<h1 className="display-header text-black"> <h1 className="display-header text-black">
@ -264,28 +264,28 @@ const MainLogin = () => {
</div> </div>
<button <button
class="carousel-control-prev" className="carousel-control-prev"
type="button" type="button"
data-bs-target="#textCarousel" data-bs-target="#textCarousel"
data-bs-slide="prev" data-bs-slide="prev"
> >
<span <span
class="carousel-control-prev-icon" className="carousel-control-prev-icon"
aria-hidden="true" aria-hidden="true"
></span> ></span>
<span class="visually-hidden">Previous</span> <span className="visually-hidden">Previous</span>
</button> </button>
<button <button
class="carousel-control-next" className="carousel-control-next"
type="button" type="button"
data-bs-target="#textCarousel" data-bs-target="#textCarousel"
data-bs-slide="next" data-bs-slide="next"
> >
<span <span
class="carousel-control-next-icon" className="carousel-control-next-icon"
aria-hidden="true" aria-hidden="true"
></span> ></span>
<span class="visually-hidden">Next</span> <span className="visually-hidden">Next</span>
</button> </button>
</div> </div>
</div> </div>

View File

@ -84,10 +84,10 @@ const RegisterPage = () => {
<div className="d-flex align-items-center justify-content-center "> <div className="d-flex align-items-center justify-content-center ">
<img src="/img/brand/marco.png" width="50" /> <img src="/img/brand/marco.png" width="50" />
<Link aria-label="Go to Home Page" to="/"> <Link aria-label="Go to Home Page" to="/">
<span class="app-brand-logo "> <span className="app-brand-logo ">
<span class="text-blue fs-4">OnField</span> <span className="text-blue fs-4">OnField</span>
<span className="text-green fs-4">Work</span> <span className="text-green fs-4">Work</span>
<span class="text-dark fs-4">.com</span> <span className="text-dark fs-4">.com</span>
</span> </span>
<br /> <br />
</Link> </Link>

View File

@ -9,6 +9,7 @@ import DeliveryChallane from "../../components/purchase/DeliveryChallane";
import PurchasePayment from "../../components/purchase/PurchasePayment"; import PurchasePayment from "../../components/purchase/PurchasePayment";
import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { useHasUserPermission } from "../../hooks/useHasUserPermission";
import { MANAGEPURCHASE_INVOICE } from "../../utils/constants"; import { MANAGEPURCHASE_INVOICE } from "../../utils/constants";
import PreviewDocument from "../../components/Expenses/PreviewDocument";
export const PurchaseContext = createContext(); export const PurchaseContext = createContext();
export const usePurchaseContext = () => { export const usePurchaseContext = () => {
@ -40,6 +41,7 @@ const PurchasePage = () => {
isOpen: false, isOpen: false,
purchaseId: null, purchaseId: null,
}); });
const [ViewDocument,setDocumentView] = useState({ IsOpen: false, Images: null })
const canCreatePurchase = useHasUserPermission(MANAGEPURCHASE_INVOICE); const canCreatePurchase = useHasUserPermission(MANAGEPURCHASE_INVOICE);
@ -48,6 +50,7 @@ const PurchasePage = () => {
setManagePurchase, setManagePurchase,
setChallan, setChallan,
setAddPayment, setAddPayment,
setDocumentView
}; };
return ( return (
<PurchaseContext.Provider value={contextValue}> <PurchaseContext.Provider value={contextValue}>
@ -170,6 +173,17 @@ const PurchasePage = () => {
/> />
</GlobalModel> </GlobalModel>
)} )}
{ViewDocument.IsOpen && (
<GlobalModel
isOpen
size="md"
key={ViewDocument.Images ?? "doc"}
closeModal={() => setDocumentView({ IsOpen: false, Images: null })}
>
<PreviewDocument files={ViewDocument.Images} />
</GlobalModel>
)}
</div> </div>
</PurchaseContext.Provider> </PurchaseContext.Provider>
); );

View File

@ -2,15 +2,15 @@ export const blockUI = (message = 'Please wait...') => {
if (window.$ && window.$.blockUI) { if (window.$ && window.$.blockUI) {
window.$.blockUI({ window.$.blockUI({
message: ` message: `
<div class="d-flex flex-column align-items-center"> <div className="d-flex flex-column align-items-center">
<div class="sk-wave mb-2"> <div className="sk-wave mb-2">
<div class="sk-wave-rect"></div> <div className="sk-wave-rect"></div>
<div class="sk-wave-rect"></div> <div className="sk-wave-rect"></div>
<div class="sk-wave-rect"></div> <div className="sk-wave-rect"></div>
<div class="sk-wave-rect"></div> <div className="sk-wave-rect"></div>
<div class="sk-wave-rect"></div> <div className="sk-wave-rect"></div>
</div> </div>
<p class="text-white">${message}</p> <p className="text-white">${message}</p>
</div>`, </div>`,
css: { css: {
backgroundColor: 'transparent', backgroundColor: 'transparent',