import React, { useState, useEffect, useRef, useCallback } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { getSession, extractLastNumber, dateTimeFormatChange, } from '../../../Services/Others'; import { Tables } from '../../../Components/Tables/Table'; import { RadioGrpButton } from '../../../Components/Forms/RadioGroup.jsx'; import { Form, Popover } from 'antd'; import { InputField } from '../../../Components/Forms/InputField.jsx'; import Buttons from '../../../Components/Forms/Buttons.jsx'; import { PlusOutlined } from '@ant-design/icons'; import { DropDowns } from '../../../Components/Forms/DropDown.jsx'; import { getCustmentWholeSaleTran, getEmployeeWholeSaleTran, getWholeSalePayments, getWholeSaleTranList, PostCustempWholeSaleTran, } from '../../../Features/WSTransaction/WSTransaction.js'; import { Messages } from '../../../Components/Notifications/Messages.jsx'; const OpeningBalance = () => { const dispatch = useDispatch(); const formRef = useRef(); const CompId = getSession('CompId'); const BranchId = getSession('BranchId'); const AppId = getSession('AppId'); const UserId = getSession('UserId'); const [page, setpage] = useState(1); const [SelectedCustomer, setSelectedCustomer] = useState(); const [SelectedCustomerRole, setSelectedCustomerRole] = useState(); const [customer, setCustomer] = useState(); const [CustPaymentModes, setPaymentModesCust] = useState([]); const [EmployeePaymentModes, setPaymentModesEmployee] = useState([]); const [CustTableData, setCustTableData] = useState([]); const [selectedPaymentMode, setSelectedPaymentMode] = useState(''); const [PaidListData, SetPaidListData] = useState([]); const [ButtonDisabled, setButtonDisabled] = useState(false); const [messageType, setMessageType] = useState(null); const [messageData, setMessageData] = useState(null); const [PaymentType, setPaymentType] = useState('M'); useEffect(() => { const PaymentCredit = CustPaymentModes?.find((a) => a?.ConfigId === selectedPaymentMode) ?.ConfigName === 'Credit'; if (PaymentCredit) { const SelectCustData = customer?.find( (a) => a?.CustSuppId === SelectedCustomer ); formRef?.current?.setFieldsValue({ Payment: SelectCustData?.NetAmount || 0, }); } }, [selectedPaymentMode]); console.log(selectedPaymentMode, 'selectedPaymentMode'); const columns = [ { title: 'Sl.No', key: 'sno', align: 'center', width: '80px', render: (text, object, index) => ( {(page - 1) * 10 + index + 1} ), }, { title: 'Name', key: 'UserName', dataIndex: 'UserName', render: (productDetails, record) => ( {record?.UserRole === 'Admin' ? `${record?.UserName} (Admin)` : record?.UserName} ), }, { title: 'Date', key: 'Date', dataIndex: 'Date', render: (productDetails, record) => ( {dateTimeFormatChange(record?.Date)} ), }, { title: 'Payment Type', key: 'PaymentTypeName', dataIndex: 'PaymentTypeName', render: (productDetails, record) => ( {record?.PaymentTypeName} ), }, { title: 'Amount', key: 'Amount', dataIndex: 'Amount', align: 'right', render: (productDetails, record) => ( {record?.Amount} ), }, ]; const Custmercolumns = [ // { // title: "SI.NO", // key: "sno", // align: "center", // width: "80px", // render: (text, object, index) => ( // {index + 1} // ), // }, // { // title: "Name", // dataIndex: 'CustSuppName', // key: "CustSuppName", // width: "150px", // render: (text, row) => ( // {text} // ), // onCell: (record) => ({ // onClick: () => { // vieworders(record); // }, // }), // }, { title: 'OB', dataIndex: 'OpeningBalance', key: 'OpeningBalance', width: '110px', align: 'right', render: (text) => ( {Math.abs(text)} {/* Show absolute value */} ), }, { title: 'Sales', dataIndex: 'NetAmount', key: 'NetAmount', width: '110px', align: 'right', render: (text) => {text || 0}, }, { title: 'Commission', dataIndex: 'CommissionAmount', key: 'CommissionAmount', width: '110px', align: 'right', render: (text, row) => {text || 0}, }, { title: 'Total Balance', dataIndex: 'Total', key: 'Total', width: '110px', align: 'right', render: (text, record) => ( {Math.abs( (record?.OpeningBalance || 0) + (record?.NetAmount || 0) - (record?.CommissionAmount || 0) )} ), }, ]; const onChangeOption = async (e) => { setPaymentType(e); formRef?.current?.setFieldsValue({ Customer: null }); setSelectedCustomer(null); setSelectedCustomerRole(null); }; const ChangeCustomer = (e, role) => { if (role === 'Employee') { let data = customer?.find((a) => a.UserId === e)?.RoleName; formRef?.current?.setFieldsValue({ Customer: e }); setSelectedCustomer(e); setSelectedCustomerRole(data); } else { formRef?.current?.setFieldsValue({ Customer: e }); setSelectedCustomer(e); setSelectedCustomerRole(role); } }; const paymentDtlfun = async () => { let res = await dispatch( getWholeSalePayments({ TypeName: 'Wholesale Payment Mode' }) ).unwrap(); if (res?.data?.statusCode === 1) { let cashMode = res?.data?.data?.filter( (item) => item.ConfigName !== 'Card' ); let cashEmployee = res?.data?.data?.filter( (item) => item.ConfigName !== 'Card' && item?.ConfigName !== 'Credit' ); setPaymentModesCust(cashMode); setPaymentModesEmployee(cashEmployee); } }; useEffect(() => { paymentDtlfun(); TranCompltList(); }, []); useEffect(() => { if (PaymentType === 'C') { fetchWholeSaleCustomer(); } else { fetchWholeSaleEmployee(); } }, [PaymentType, EmployeePaymentModes]); const fetchWholeSaleCustomer = async () => { const Data = { CompId: CompId, BranchId: BranchId, AppId: AppId, }; const gettingTableData = await dispatch( getCustmentWholeSaleTran(Data) ).unwrap(); if (gettingTableData?.data?.statusCode === 1) { setCustomer(gettingTableData?.data?.data); console.log(CustPaymentModes); let cutDefaultValue = CustPaymentModes?.[0]; setSelectedPaymentMode(cutDefaultValue?.ConfigId); } else { setCustomer([]); setSelectedPaymentMode(''); } }; const fetchWholeSaleEmployee = async () => { const Data = { CompId: CompId, BranchId: BranchId, AppId: AppId, }; const gettingTableData = await dispatch( getEmployeeWholeSaleTran(Data) ).unwrap(); if (gettingTableData?.data?.statusCode === 1) { setCustomer(gettingTableData?.data?.data); let EmpDefaultValue = EmployeePaymentModes?.[0]; setSelectedPaymentMode(EmpDefaultValue?.ConfigId); } else { setCustomer([]); setSelectedPaymentMode(''); } }; const onFinish = async (values) => { setButtonDisabled(true); const data = customer.find((a) => a?.CustSuppId === SelectedCustomer); const postData = { UserId: values?.Customer, ReceivedAmount: values?.Payment, PaymentType: selectedPaymentMode, CompId: CompId, AppId: AppId, BranchId: BranchId, PaymentStatus: 'S', UserRole: SelectedCustomerRole, BalanceType: 'OB', NetAmount: data?.NetAmount, CreatedBy: UserId, OpeningBalance: data?.OpeningBalance, OrderDetails: data?.OrderDetails, PaymentDetail: [ { Amount: values?.Payment, PaymentType: selectedPaymentMode, PaymentStatus: 'S', // "Debit":credit?values?.Payment:0, // "Credit":!credit? values?.Payment:0 }, ], }; const res = await dispatch(PostCustempWholeSaleTran(postData)).unwrap(); if (res?.data?.statusCode === 1) { setMessageType('success'); setMessageData('Amount Added Successfully'); if (SelectedCustomerRole === 'Customer') { await fetchWholeSaleCustomer(); } else { await fetchWholeSaleEmployee(); } await TranCompltList(); await Clearfun(); } else { setMessageType('error'); setMessageData(res?.data?.response); } }; const Clearfun = async () => { setSelectedCustomer(null); setSelectedCustomerRole(null); // formRef?.current?.setFieldsValue({ Customer: '' }); // formRef?.current?.setFieldsValue({ Payment: 0 }); formRef.current?.resetFields(); }; const TranCompltList = async () => { const Data = { CompId: CompId, BranchId: BranchId, AppId: AppId, UserId: UserId, }; const gettingTableData = await dispatch( getWholeSaleTranList(Data) ).unwrap(); if (gettingTableData?.data?.statusCode === 1) { SetPaidListData(gettingTableData?.data?.data); setButtonDisabled(false); } else { SetPaidListData([]); } }; const onComplete = useCallback(() => { setMessageData(null); setMessageType(null); }, []); const handlePageChange = (current) => { setpage(current); }; return (
onChangeOption(e)} /> {PaymentType === 'C' && (
({ value: option?.CustSuppId, label: option?.CustShortName ? option?.CustShortName : option?.CustSuppName ? option?.CustSuppName : option?.CustMobile, }))} label={} className="field-DropDown" onChangeFunction={(e) => ChangeCustomer(e, 'Customer')} valueData={SelectedCustomer} />
{ if (value === undefined || value === null) { return Promise.reject( 'Please enter a valid Amount' ); } return Promise.resolve(); }, }, ]} > Amount} disabled={ CustPaymentModes.find( (a) => a.ConfigId === selectedPaymentMode )?.ConfigName === 'Credit' ? true : false } autocomplete="off" isOnChange={ CustPaymentModes.find( (a) => a.ConfigId === selectedPaymentMode )?.ConfigName === 'Credit' && true } />
{CustPaymentModes?.filter( (item) => !( item.ConfigName === 'Credit' && !customer.find( (a) => a?.CustSuppId === SelectedCustomer )?.OrderDetails?.length > 0 ) ).map((item) => { return (
setSelectedPaymentMode(item.ConfigId)} > {item.ConfigName}
); })}
} htmlType={true} />
{customer .filter((a) => a?.CustSuppId === SelectedCustomer) .map((filteredCustomer) => (

OB : {Math.abs(filteredCustomer?.OpeningBalance)}

Sales Amount : {filteredCustomer?.NetAmount || 0}

{' '} Total Balance Amount :{' '} {' '} {Math.abs( (filteredCustomer?.OpeningBalance || 0) - (filteredCustomer?.NetAmount || 0) )}

))}
)} {PaymentType === 'M' && (
({ value: option?.UserId, label: option?.EmpFirstName ? `${option?.EmpFirstName} ${option?.RoleName === 'Admin' ? '(Admin)' : ''}` : option?.MobileNo, }))} label={} className="field-DropDown" onChangeFunction={(e) => ChangeCustomer(e, 'Employee')} valueData={SelectedCustomer} />
Amount} autocomplete="off" />
{EmployeePaymentModes.map((item) => { return (
setSelectedPaymentMode(item.ConfigId)} > {item.ConfigName}
); })}
} htmlType={true} />
{/*
*/}
)}

Transaction List

{PaidListData?.[0]?.CashTotalAmount > 0 && (
Cash:{PaidListData?.[0]?.CashTotalAmount}
)} {PaidListData?.[0]?.UpiTotalAmount > 0 && (
UPI:{PaidListData?.[0]?.UpiTotalAmount}
)} {PaidListData?.[0]?.CardTotalAmount > 0 && (
Card:{PaidListData?.[0]?.CardTotalAmount}
)} {PaidListData?.[0]?.CreditTotalAmount > 0 && (
Credit:{PaidListData?.[0]?.CreditTotalAmount}
)} } >

Total Amount :{' '} {PaidListData?.[0]?.OverAllTotalAmount || 0}

); }; export default OpeningBalance;