diff --git a/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingEditQuantity/BSBillingEditQuantity.jsx b/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingEditQuantity/BSBillingEditQuantity.jsx
index 93cf4e6..e91957c 100644
--- a/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingEditQuantity/BSBillingEditQuantity.jsx
+++ b/src/Pages/BookingScreen/Components/BSBillingTables/BSBillingEditQuantity/BSBillingEditQuantity.jsx
@@ -3180,13 +3180,13 @@ const BSBillingEditQuantity = (props) => {
...(
!offerApply && itemDiscountPrice > 0
? {
- DiscountAmt: safeRound(itemDiscountPrice),
+ DiscountAmt: safeRound(itemDiscountPrice*fixedQty ),
DiscountType: itemDiscountPercentageSelection === 'Fixed' ? 'F' : 'P',
DiscountValue:
itemDiscountPercentageSelection === 'Fixed'
- ? itemDiscountPrice
+ ? itemDiscountPrice*fixedQty
: (
- (itemDiscountPrice /
+ (itemDiscountPrice*fixedQty /
(newPrice > 0 ? newPrice : editedProduct?.OrderRate)) * 100
)
}
@@ -3301,7 +3301,7 @@ const BSBillingEditQuantity = (props) => {
const { OfferType = null, OfferPrice = 0 } = product;
let totalAmount = qty * rate;
- totalAmount = totalAmount - (itemDiscountPrice || 0);
+ totalAmount = totalAmount - (itemDiscountPrice*qty|| 0);
const taxAmount = (
(totalAmount * taxPercentage) /
(100 + taxPercentage)
diff --git a/src/Pages/BookingScreen/PrintTemplates/A4/TaxInvoice.jsx b/src/Pages/BookingScreen/PrintTemplates/A4/TaxInvoice.jsx
index e12d50b..3fe85e2 100644
--- a/src/Pages/BookingScreen/PrintTemplates/A4/TaxInvoice.jsx
+++ b/src/Pages/BookingScreen/PrintTemplates/A4/TaxInvoice.jsx
@@ -13,6 +13,7 @@ import {
GlobalSelectedFooterFontColor,
GlobalSelectedNetAmountColor,
GlobalSelectedNetAmountFontColor,
+ GloabalFieldDetails,
} from '../../../../Features/ThemeChange/ThemeChange';
import { isMobile } from 'react-device-detect';
import { extractLastNumberOrderId } from '../../../../Services/Others';
@@ -70,6 +71,10 @@ const TaxInvoice = ({
const tableBodyColor = printColors?.find(obj => obj.tableBodyColor)?.tableBodyColor;
const footerColor = printColors?.find(obj => obj.footerColor)?.footerColor;
const netAmtColor = printColors?.find(obj => obj.netAmtColor)?.netAmtColor;
+ const FieldDetails = useSelector(GloabalFieldDetails);
+ console.log(FieldDetails,"FieldDetails")
+ const Discount = FieldDetails?.['Discount'];
+ console.log(Discount, "Discount")
// Function to convert number to words
const numberToWords = (num) => {
const a = [
@@ -802,7 +807,8 @@ const TaxInvoice = ({
Rate
+ {Discount &&
+ Disc
+
}
{/* per
*/}
Amount
@@ -869,7 +884,7 @@ const TaxInvoice = ({
key={index}
style={{
display: 'grid',
- gridTemplateColumns: '5% 40% 12% 11% 16% 16%',
+ gridTemplateColumns: Discount ? '5% 40% 12% 11% 8% 8% 16%' : '5% 40% 12% 11% 16% 16%',
// borderRight: '1px solid #000',
...(index % 2 === 0 && rowtypeStyle === "even"
? tableBodyStyle
@@ -976,6 +991,21 @@ const TaxInvoice = ({
maximumFractionDigits: 2,
})}
+ {Discount &&
+ {Number(
+
+ (item.DiscountAmt / item.SalesQty) || 0
+ ).toLocaleString('en-IN', {
+ minimumFractionDigits: 2,
+ maximumFractionDigits: 2,
+ })}
+
}
{/* {item.UomName || 'NOS'}
*/}
+ {Discount && }
@@ -1048,7 +1079,7 @@ const TaxInvoice = ({
CGST
+ {Discount && }
@@ -1100,7 +1134,7 @@ const TaxInvoice = ({
SGST
+ {Discount && }
@@ -1155,7 +1192,7 @@ const TaxInvoice = ({
IGST
+ {Discount && }
@@ -1211,7 +1251,7 @@ const TaxInvoice = ({
ROUNDING OFF
+
+ {Discount && }
@@ -1248,7 +1292,7 @@ const TaxInvoice = ({
key={`empty-${idx}`}
style={{
display: 'grid',
- gridTemplateColumns: '5% 40% 12% 11% 16% 16%',
+ gridTemplateColumns: Discount ? '5% 40% 12% 11% 8% 8% 16%' : '5% 40% 12% 11% 16% 16%',
// borderRight: '1px solid #000',
minHeight: '32px', // Adjust height as needed for your design
@@ -1272,6 +1316,15 @@ const TaxInvoice = ({
>
+ {Discount &&
+
+
}
+ {Discount &&
}
{/*
*/}
No items to display
+ {Discount &&
+ -
+
}
{
//post data
const onFinish = async (values) => {
- let postData = values;
- console.log(postData, 'postData');
-
- // Handle address data - use only the addresses from addressesList
- const addedAddresses = addressesList || [];
-
- // Only include addresses that have Address1 and Zip
- const validAddresses = addedAddresses.filter(
- (addr) => addr?.Address1 && addr?.Zip
- );
-
- postData['CustomerAddressDtl'] = validAddresses;
-
- postData['CreatedBy'] = UserId;
- postData['CompId'] = CompId;
- postData['BranchId'] = BranchId;
- postData['UserId'] = GetUserId;
- // postData["OutStandingAmount"] = parseInt(values?.OutStandingAmount);
- postData['InitialOutStanding'] = parseInt(values?.OutStandingAmount);
-
- postData['Document'] = ImageUrl;
- postData['CustomerProfile'] = ImageUrl ? ImageUrl : null;
- postData['CreditDays'] =
- selectedCredit === 'others' ? otherCreditValue : selectedCredit;
- let response = {};
- if (formType === 'add') {
- // if (SelectedUserCreation === "N") {
- postData['AppId'] = AppId;
- // }
- if (offerType) {
- postData['OfferType'] = offerType;
- }
- if (Maritalstatus == 'N') {
- postData['MarriedStatus'] = 'N';
- postData['CustDOB'] = DobDate;
- }
- if (Maritalstatus == 'Y') {
- postData['MarriedStatus'] = 'Y';
- postData['CustDOB'] = DobDate;
- postData['SpouseDOB'] = SpouseDobDate;
- postData['AnniversaryDate'] = anniversaryDate;
+ try {
+ let postData = values;
+ console.log(postData, 'postData');
+ const validMobile = isIndianMobile(postData?.CustMobile);
+ if (!validMobile) {
+ setMessageType('warning');
+ setMessageData('Please enter a valid Indian mobile number.');
+ return;
}
+ // Handle address data - use only the addresses from addressesList
+ const addedAddresses = addressesList || [];
- response = await dispatch(postCust(postData)).unwrap();
- } else if (formType === 'edit') {
- if (editstate) {
- postData['CustId'] = editstate?.CustId;
- postData['AddId'] = editstate?.CustAddId;
- postData['AppId'] = editstate?.AppId;
- postData['UpdatedBy'] = UserId;
- postData['UserId'] = editstate?.UserId;
+ // Only include addresses that have Address1 and Zip
+ const validAddresses = addedAddresses.filter(
+ (addr) => addr?.Address1 && addr?.Zip
+ );
+
+ postData['CustomerAddressDtl'] = validAddresses;
+
+ postData['CreatedBy'] = UserId;
+ postData['CompId'] = CompId;
+ postData['BranchId'] = BranchId;
+ postData['UserId'] = GetUserId;
+ // postData["OutStandingAmount"] = parseInt(values?.OutStandingAmount);
+ postData['InitialOutStanding'] = parseInt(values?.OutStandingAmount);
+
+ postData['Document'] = ImageUrl;
+ postData['CustomerProfile'] = ImageUrl ? ImageUrl : null;
+ postData['CreditDays'] =
+ selectedCredit === 'others' ? otherCreditValue : selectedCredit;
+ let response = {};
+ if (formType === 'add') {
+ // if (SelectedUserCreation === "N") {
+ postData['AppId'] = AppId;
+ // }
if (offerType) {
postData['OfferType'] = offerType;
}
@@ -418,22 +403,48 @@ const CustomerForm = ({ formType }) => {
postData['SpouseDOB'] = SpouseDobDate;
postData['AnniversaryDate'] = anniversaryDate;
}
- }
- response = await dispatch(putCust(postData)).unwrap();
- }
- if (response?.data?.statusCode == 1) {
- navigate(`${subDirectory}setting/customer-master/`, {
- state: {
- Notiffy: {
- messageType: 'success',
- messageData: response?.data?.response,
+ response = await dispatch(postCust(postData)).unwrap();
+ } else if (formType === 'edit') {
+ if (editstate) {
+ postData['CustId'] = editstate?.CustId;
+ postData['AddId'] = editstate?.CustAddId;
+ postData['AppId'] = editstate?.AppId;
+ postData['UpdatedBy'] = UserId;
+ postData['UserId'] = editstate?.UserId;
+ if (offerType) {
+ postData['OfferType'] = offerType;
+ }
+ if (Maritalstatus == 'N') {
+ postData['MarriedStatus'] = 'N';
+ postData['CustDOB'] = DobDate;
+ }
+ if (Maritalstatus == 'Y') {
+ postData['MarriedStatus'] = 'Y';
+ postData['CustDOB'] = DobDate;
+ postData['SpouseDOB'] = SpouseDobDate;
+ postData['AnniversaryDate'] = anniversaryDate;
+ }
+ }
+ response = await dispatch(putCust(postData)).unwrap();
+ }
+
+ if (response?.data?.statusCode == 1) {
+ navigate(`${subDirectory}setting/customer-master/`, {
+ state: {
+ Notiffy: {
+ messageType: 'success',
+ messageData: response?.data?.response,
+ },
},
- },
- });
- } else {
- setMessageType('error');
- setMessageData(response?.data?.response);
+ });
+ } else {
+ setMessageType('error');
+ setMessageData(response?.data?.response);
+ }
+ } catch (error) {
+ // Validation error will stop submit
+ console.log("Validation Failed:", error);
}
};
@@ -841,12 +852,17 @@ const CustomerForm = ({ formType }) => {
);
};
+ const onComplete = useCallback(() => {
+ setMessageType(null);
+ setMessageData(null);
+ }, []);
+
return (
-
+
@@ -865,10 +881,12 @@ const CustomerForm = ({ formType }) => {
rules={[
{
required: true,
- pattern: /^\d{10}$/,
- message: 'Please Enter a Valid Mobile Number',
+ message: "Please Enter Mobile Number",
+ },
+ {
+ pattern: /^[6-9]\d{9}$/,
+ message: "Please enter a valid mobile number",
},
-
{ validator: validatePhoneNumber },
]}
>
@@ -888,10 +906,10 @@ const CustomerForm = ({ formType }) => {
}
inputMode="numeric"
onInput={(e) =>
- (e.target.value = e.target.value.replace(
- /[^0-9]/g,
- ''
- ))
+ (e.target.value = e.target.value.replace(
+ /[^0-9]/g,
+ ''
+ ))
}
/>
@@ -987,15 +1005,15 @@ const CustomerForm = ({ formType }) => {
autocomplete="off"
isOnChange={
formType == 'edit' ||
- formRef.current?.getFieldsValue()?.CustName != ''
+ formRef.current?.getFieldsValue()?.CustName != ''
? true
: false
}
- // isOnChange={
- // formType == 'edit' || fieldChangeMap['CustName']
- // ? true
- // : false
- // }
+ // isOnChange={
+ // formType == 'edit' || fieldChangeMap['CustName']
+ // ? true
+ // : false
+ // }
/>
{
autocomplete="off"
isOnChange={
formType == 'edit' ||
- fieldChangeMap['CustShortName']
+ fieldChangeMap['CustShortName']
? true
: false
}
@@ -1076,9 +1094,9 @@ const CustomerForm = ({ formType }) => {
Upload Profile
- // formType === 'edit' ? editstate?.EmpPhotoLink : e
- // }
+ // getValueFromEvent={(e) =>
+ // formType === 'edit' ? editstate?.EmpPhotoLink : e
+ // }
>
{
autocomplete="off"
isOnChange={
formType == 'edit' ||
- formRef.current?.getFieldsValue()?.CustEmail
+ formRef.current?.getFieldsValue()?.CustEmail
? true
: false
}
@@ -1133,7 +1151,7 @@ const CustomerForm = ({ formType }) => {
maxLength={15}
isOnChange={
formType == 'edit' ||
- formRef.current?.getFieldsValue()?.CustGSTIN
+ formRef.current?.getFieldsValue()?.CustGSTIN
? true
: false
}
@@ -1157,7 +1175,7 @@ const CustomerForm = ({ formType }) => {
autocapitalize="on"
isOnChange={
formType == 'edit' ||
- formRef.current?.getFieldsValue()?.StateCode
+ formRef.current?.getFieldsValue()?.StateCode
? true
: false
}
@@ -1173,13 +1191,13 @@ const CustomerForm = ({ formType }) => {
style={
offerType == 'P'
? {
- opacity: '1',
- boxShadow:
- 'rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px',
- margin: '3px',
- padding: '5px',
- backgroundColor: '#fff',
- }
+ opacity: '1',
+ boxShadow:
+ 'rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px',
+ margin: '3px',
+ padding: '5px',
+ backgroundColor: '#fff',
+ }
: { opacity: '0.6', boxShadow: 'none' }
}
onClick={() => {
@@ -1200,13 +1218,13 @@ const CustomerForm = ({ formType }) => {
style={
offerType == 'F'
? {
- opacity: '1',
- boxShadow:
- 'rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px',
- margin: '3px',
- padding: '5px',
- backgroundColor: '#fff',
- }
+ opacity: '1',
+ boxShadow:
+ 'rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px',
+ margin: '3px',
+ padding: '5px',
+ backgroundColor: '#fff',
+ }
: { opacity: '0.6', boxShadow: 'none' }
}
onClick={() => {
@@ -1384,7 +1402,7 @@ const CustomerForm = ({ formType }) => {
);
}}
inputMode="numeric"
- // style={{ marginLeft: '10px', width: '120px' }}
+ // style={{ marginLeft: '10px', width: '120px' }}
/>
)}
@@ -1404,8 +1422,8 @@ const CustomerForm = ({ formType }) => {
autocomplete="off"
isOnChange={
formType == 'edit' ||
- formRef.current?.getFieldsValue()
- ?.CreditLimit
+ formRef.current?.getFieldsValue()
+ ?.CreditLimit
? true
: false
}
@@ -1932,7 +1950,7 @@ const CustomerForm = ({ formType }) => {
{
prevlca={
editstate
? {
- lat: editstate.Latitude,
- lng: editstate.Longitude,
- }
+ lat: editstate.Latitude,
+ lng: editstate.Longitude,
+ }
: null
}
/>
diff --git a/src/Pages/paymentpdfPage/PaymentPdfBooking.jsx b/src/Pages/paymentpdfPage/PaymentPdfBooking.jsx
index fe11585..49431c1 100644
--- a/src/Pages/paymentpdfPage/PaymentPdfBooking.jsx
+++ b/src/Pages/paymentpdfPage/PaymentPdfBooking.jsx
@@ -1733,6 +1733,10 @@ const PaymentPdfBooking = ({
))}
+
+ Your Order No:{' '}
+ {table2Data?.SalesId && extractLastNumber(table2Data?.SalesId)}
+
))}