feat : almost done full sidebar functinalities
This commit is contained in:
parent
6dbe85bfcc
commit
f00629cf45
@ -124,7 +124,7 @@ async printTicketCancel() {
|
||||
const cancelReq = {
|
||||
ticketNo: lastTicket.barcodeId,
|
||||
btId: lastTicket.btId || "0485",
|
||||
usrId: lastTicket.usrId || "341"
|
||||
usrId: lastTicket.usrId || "066"
|
||||
};
|
||||
|
||||
console.log("📡 Sending cancel request:", cancelReq);
|
||||
@ -229,122 +229,7 @@ Original Total: ₹${cancelTicketData.totalAmount}
|
||||
payoutWarning = ''; // show GUI message when payout response is not as expected
|
||||
|
||||
|
||||
// async printPayoutTicket() {
|
||||
// console.log("🖨️ Print payout clicked");
|
||||
|
||||
// const ticketNo = this.payoutTicketNo?.toString().trim();
|
||||
// if (!ticketNo) {
|
||||
// console.warn("⚠️ No payout ticket number set.");
|
||||
// return;
|
||||
// }
|
||||
|
||||
// const userName = localStorage.getItem('userName') || 'Unknown';
|
||||
|
||||
// // Prepare request payload (same as your curl)
|
||||
// const apiPayload = {
|
||||
// ticketNo: ticketNo,
|
||||
// voucherNo: "",
|
||||
// memAcctNum: "",
|
||||
// memAcctCardCode: "",
|
||||
// moneyTyp: "C",
|
||||
// btId: "0485", // replace with dynamic btId if needed
|
||||
// usrId: "341" // replace with dynamic usrId if needed
|
||||
// };
|
||||
|
||||
// console.log("📡 Sending payout API request:", apiPayload);
|
||||
|
||||
// try {
|
||||
// const apiUrl = "http://localhost:8086/payout/ticket?debug=1";
|
||||
|
||||
// const resp = await fetch(apiUrl, {
|
||||
// method: "POST",
|
||||
// headers: { "Content-Type": "application/json" },
|
||||
// body: JSON.stringify(apiPayload)
|
||||
// });
|
||||
|
||||
// if (!resp.ok) {
|
||||
// console.error("❌ Payout API HTTP error:", resp.status, resp.statusText);
|
||||
// return;
|
||||
// }
|
||||
|
||||
// const json = await resp.json();
|
||||
// console.log("📩 Payout API response JSON:", json);
|
||||
|
||||
// // ✅ Save only the response (no request) to localStorage
|
||||
// try {
|
||||
// localStorage.setItem("payout", JSON.stringify(json));
|
||||
// console.log("[localStorage] saved payout response only");
|
||||
// } catch (e) {
|
||||
// console.warn("⚠️ Failed to save payout to localStorage:", e);
|
||||
// }
|
||||
|
||||
// if (!json.ok) {
|
||||
// console.error("❌ Payout API returned ok: false -", json.error || json);
|
||||
// return;
|
||||
// }
|
||||
|
||||
|
||||
// // ✅ Load the payout response from localStorage
|
||||
// let payoutResp: any = null;
|
||||
// try {
|
||||
// const stored = localStorage.getItem("payout");
|
||||
// if (stored) payoutResp = JSON.parse(stored);
|
||||
// } catch (e) {
|
||||
// console.warn("⚠️ Failed to parse stored payout:", e);
|
||||
// }
|
||||
|
||||
// // Default dividend fallback
|
||||
// let dividend = "0";
|
||||
// if (payoutResp && payoutResp.data && typeof payoutResp.data.cashAmount !== "undefined") {
|
||||
// dividend = String(payoutResp.data.cashAmount);
|
||||
// }
|
||||
// // Success: proceed to build print payload
|
||||
// const backendData = json.data || {};
|
||||
// const printData = {
|
||||
// type: 'payout',
|
||||
// ticketNumber: ticketNo,
|
||||
// printedBy: userName,
|
||||
// dividend: dividend,
|
||||
// backend: backendData
|
||||
// };
|
||||
|
||||
// const layoutPreview = `
|
||||
// -------------------------------
|
||||
// 🎉 PAYOUT TICKET 🎉
|
||||
// -------------------------------
|
||||
// Ticket No : ${printData.ticketNumber}
|
||||
// Dividend : ${printData.dividend}
|
||||
// Printed By : ${printData.printedBy}
|
||||
// Backend Amt : ${backendData.cashAmount ?? 'N/A'}
|
||||
// User Name : ${backendData.userName ?? 'N/A'}
|
||||
// Date : ${new Date().toLocaleString()}
|
||||
// -------------------------------
|
||||
// 💸 Thank you for playing 💸
|
||||
// -------------------------------
|
||||
// `;
|
||||
// console.log("[🧾 PAYOUT LAYOUT PREVIEW]");
|
||||
// console.log(layoutPreview);
|
||||
|
||||
// try {
|
||||
// const printResp = await fetch('http://localhost:9100/print', {
|
||||
// method: 'POST',
|
||||
// headers: { 'Content-Type': 'application/json' },
|
||||
// body: JSON.stringify(printData)
|
||||
// });
|
||||
|
||||
// if (!printResp.ok) throw new Error(`Printer HTTP ${printResp.status}`);
|
||||
// const printResult = await printResp.text();
|
||||
// console.log("✅ Payout print successful:", printResult);
|
||||
// } catch (printErr) {
|
||||
// console.error("❌ Payout print failed:", printErr);
|
||||
// }
|
||||
|
||||
// this.closePayoutPopup();
|
||||
|
||||
// } catch (err) {
|
||||
// console.error("❌ Payout API call failed:", err);
|
||||
// }
|
||||
// }
|
||||
async printPayoutTicket() {
|
||||
console.log("🖨️ Print payout clicked");
|
||||
this.payoutWarning = '';
|
||||
@ -492,10 +377,11 @@ Date : ${new Date().toLocaleString()}
|
||||
|
||||
|
||||
//------------------------------------PRINT DEPOSIT TICKET STARTS HERE-------------------------------------------
|
||||
|
||||
printDeposit() {
|
||||
const userName = localStorage.getItem('userName') || 'Unknown';
|
||||
//------------------------------------PRINT DEPOSIT TICKET STARTS HERE-------------------------------------------
|
||||
async printDeposit() {
|
||||
console.log("🖨️ Print deposit clicked");
|
||||
this.depositWarning = '';
|
||||
|
||||
// ✅ Validation — stop if any of the required fields are missing
|
||||
if (
|
||||
!this.depositOperatorId?.toString().trim() ||
|
||||
@ -504,9 +390,67 @@ printDeposit() {
|
||||
) {
|
||||
console.warn("❌ Cannot print deposit — missing required fields.");
|
||||
this.depositWarning = '❌ Please fill Operator ID, Shroff ID, and Amount before printing.';
|
||||
return; // Stop here — no print
|
||||
return;
|
||||
}
|
||||
|
||||
const userName = localStorage.getItem('userName') || 'Unknown';
|
||||
const btid = localStorage.getItem('btid') || "0648"; // fallback if not in localStorage
|
||||
const btMake = "I";
|
||||
|
||||
// Build the API payload to mirror your curl
|
||||
const apiPayload = {
|
||||
opCardCd: String(this.depositOperatorId).trim(),
|
||||
suCardCd: String(this.depositShroffId).trim(),
|
||||
amount: Number(this.depositAmount),
|
||||
btId: btid,
|
||||
btMake: btMake
|
||||
};
|
||||
|
||||
console.log("📡 Sending deposit API request:", apiPayload);
|
||||
|
||||
try {
|
||||
const apiUrl = "http://localhost:8088/deposit";
|
||||
const resp = await fetch(apiUrl, {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify(apiPayload)
|
||||
});
|
||||
|
||||
if (!resp.ok) {
|
||||
console.error("❌ Deposit API HTTP error:", resp.status, resp.statusText);
|
||||
this.depositWarning = `❌ Deposit API HTTP ${resp.status}`;
|
||||
return;
|
||||
}
|
||||
|
||||
const json = await resp.json();
|
||||
console.log("📩 Deposit API response JSON:", json);
|
||||
|
||||
// Save only the response
|
||||
try {
|
||||
localStorage.setItem("deposit", JSON.stringify(json));
|
||||
console.log("[localStorage] saved deposit response only");
|
||||
} catch (e) {
|
||||
console.warn("⚠️ Failed to save deposit to localStorage:", e);
|
||||
}
|
||||
|
||||
if (json.ok === false) {
|
||||
console.error("❌ Deposit API returned ok: false -", json.error || json);
|
||||
this.depositWarning = `❌ Deposit failed: ${json.error ?? 'server error'}`;
|
||||
return;
|
||||
}
|
||||
|
||||
// Accept either nested or flat amount
|
||||
const nestedAmt = (json.data && typeof json.data.amount !== 'undefined') ? json.data.amount : undefined;
|
||||
const flatAmt = (typeof json.amount !== 'undefined') ? json.amount : undefined;
|
||||
|
||||
if (typeof nestedAmt === 'undefined' && typeof flatAmt === 'undefined') {
|
||||
console.warn("Deposit response missing amount in both expected places.");
|
||||
this.depositWarning = '⚠️ Deposit incomplete — server not responding correctly. Printing request amount instead.';
|
||||
}
|
||||
|
||||
const backendAmount = (typeof nestedAmt !== 'undefined') ? nestedAmt : (typeof flatAmt !== 'undefined' ? flatAmt : null);
|
||||
const printedAmount = backendAmount !== null ? backendAmount : Number(this.depositAmount);
|
||||
|
||||
// Denomination voucher section
|
||||
const content = `
|
||||
🧾 Denomination Voucher
|
||||
@ -534,7 +478,8 @@ DEPOSIT RECEIPT
|
||||
-------------------------------
|
||||
Operator : ${this.depositOperatorId}
|
||||
Shroff : ${this.depositShroffId}
|
||||
Amount : ₹${this.depositAmount}
|
||||
Requested : ₹${this.depositAmount}
|
||||
Settled : ₹${printedAmount}
|
||||
Printed By: ${userName}
|
||||
Date : ${date}
|
||||
Time : ${time}
|
||||
@ -545,34 +490,42 @@ ${content}
|
||||
console.log("🖨️ DEPOSIT PRINT LAYOUT:\n" + previewReceipt);
|
||||
|
||||
// ✅ Send to print server
|
||||
const backendData = json.data ? json.data : { ...json };
|
||||
const payload = {
|
||||
type: 'deposit',
|
||||
printedBy: userName,
|
||||
operatorId: this.depositOperatorId,
|
||||
shroffId: this.depositShroffId,
|
||||
amount: this.depositAmount,
|
||||
content: content
|
||||
amountRequested: Number(this.depositAmount),
|
||||
amountSettled: printedAmount,
|
||||
content: content,
|
||||
backend: backendData
|
||||
};
|
||||
|
||||
fetch('http://localhost:9100/print', {
|
||||
try {
|
||||
const printResp = await fetch('http://localhost:9100/print', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload)
|
||||
})
|
||||
.then(response => {
|
||||
if (!response.ok) throw new Error(`Printer error: ${response.status}`);
|
||||
return response.text();
|
||||
})
|
||||
.then(result => {
|
||||
console.log("✅ Deposit print successful:", result);
|
||||
})
|
||||
.catch(error => {
|
||||
console.error("❌ Deposit print failed:", error);
|
||||
});
|
||||
|
||||
this.closeDepositPopup();
|
||||
if (!printResp.ok) throw new Error(`Printer error: ${printResp.status}`);
|
||||
const result = await printResp.text();
|
||||
console.log("✅ Deposit print successful:", result);
|
||||
} catch (printErr) {
|
||||
console.error("❌ Deposit print failed:", printErr);
|
||||
this.depositWarning = '❌ Print failed. Check printer server.';
|
||||
}
|
||||
|
||||
this.closeDepositPopup();
|
||||
|
||||
} catch (err) {
|
||||
console.error("❌ Deposit API call failed:", err);
|
||||
this.depositWarning = '❌ Deposit API call failed. Please try again.';
|
||||
}
|
||||
}
|
||||
//--------------------------------------PRINT DEPOSIT TICKET ENDS HERE -------------------------------------------------------------
|
||||
|
||||
//--------------------------------------PRINT DEPOSIT TICKETS ENDS HERE -------------------------------------------------------------
|
||||
|
||||
openWithdrawPopup() {
|
||||
@ -590,23 +543,104 @@ ${content}
|
||||
|
||||
|
||||
//---------------------------------------PRINT WITHDRAW STARTS HERE --------------------------------------------------------
|
||||
// component class properties (place near other field declarations)
|
||||
userName = '';
|
||||
btid: string | null = null;
|
||||
|
||||
printWithdraw() {
|
||||
const userName = localStorage.getItem('userName') || 'Unknown';
|
||||
withdrawBtId = "";
|
||||
withdrawBtMake = "I" ;
|
||||
|
||||
// Clear previous warning
|
||||
// ngOnInit - ensure you already have this in your component life-cycle
|
||||
ngOnInit() {
|
||||
this.userName = localStorage.getItem('userName') || '';
|
||||
this.btid = localStorage.getItem('btid'); // <- pulled from localStorage like your navbar
|
||||
// any other init code...
|
||||
}
|
||||
|
||||
//---------------------------------------PRINT WITHDRAW STARTS HERE --------------------------------------------------------
|
||||
async printWithdraw() {
|
||||
console.log("🖨️ Print withdraw clicked");
|
||||
this.withdrawWarning = '';
|
||||
|
||||
// ✅ Validation
|
||||
// Basic validation
|
||||
if (
|
||||
!this.withdrawOperatorId?.toString().trim() ||
|
||||
!this.withdrawShroffId?.toString().trim() ||
|
||||
!this.withdrawAmount?.toString().trim()
|
||||
) {
|
||||
console.warn("⚠️ Missing operator/shroff/amount.");
|
||||
this.withdrawWarning = '❌ Please fill Operator ID, Shroff ID, and Amount before printing.';
|
||||
return; // Stop here — no print
|
||||
return;
|
||||
}
|
||||
|
||||
const userName = localStorage.getItem('userName') || this.userName || 'Unknown';
|
||||
|
||||
// Resolve btId: prefer global btid from localStorage (this.btid), fallback to withdrawBtId, then fallback literal "0648"
|
||||
const resolvedBtId = (this.btid && this.btid.toString().trim()) ? this.btid.toString().trim()
|
||||
: (this.withdrawBtId && this.withdrawBtId.toString().trim()) ? this.withdrawBtId.toString().trim()
|
||||
: "0648";
|
||||
|
||||
// btMake is always "I"
|
||||
const resolvedBtMake = "I";
|
||||
|
||||
// Build the API payload to mirror your curl
|
||||
const apiPayload = {
|
||||
opCardCd: String(this.withdrawOperatorId).trim(),
|
||||
suCardCd: String(this.withdrawShroffId).trim(),
|
||||
amount: Number(this.withdrawAmount),
|
||||
btId: resolvedBtId,
|
||||
btMake: resolvedBtMake
|
||||
};
|
||||
|
||||
console.log("📡 Sending withdraw API request:", apiPayload);
|
||||
|
||||
try {
|
||||
const apiUrl = "http://localhost:8088/withdraw";
|
||||
const resp = await fetch(apiUrl, {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify(apiPayload)
|
||||
});
|
||||
|
||||
if (!resp.ok) {
|
||||
console.error("❌ Withdraw API HTTP error:", resp.status, resp.statusText);
|
||||
this.withdrawWarning = `❌ Withdraw API HTTP ${resp.status}`;
|
||||
return;
|
||||
}
|
||||
|
||||
const json = await resp.json();
|
||||
console.log("📩 Withdraw API response JSON:", json);
|
||||
|
||||
// Persist only the response (similar to payout)
|
||||
try {
|
||||
localStorage.setItem("withdraw", JSON.stringify(json));
|
||||
console.log("[localStorage] saved withdraw response only");
|
||||
} catch (e) {
|
||||
console.warn("⚠️ Failed to save withdraw to localStorage:", e);
|
||||
}
|
||||
|
||||
// If backend uses ok:false semantics
|
||||
if (json.ok === false) {
|
||||
console.error("❌ Withdraw API returned ok: false -", json.error || json);
|
||||
this.withdrawWarning = `❌ Withdraw failed: ${json.error ?? 'server error'}`;
|
||||
return;
|
||||
}
|
||||
|
||||
// Accept either nested or flat numeric amount/cash fields if present
|
||||
const nestedAmt = (json.data && typeof json.data.amount !== 'undefined') ? json.data.amount : undefined;
|
||||
const flatAmt = (typeof json.amount !== 'undefined') ? json.amount : undefined;
|
||||
|
||||
// If there's no amount at all, we still allow printing but warn the user
|
||||
if (typeof nestedAmt === 'undefined' && typeof flatAmt === 'undefined') {
|
||||
console.warn("Withdraw response missing amount/cash in both expected places.");
|
||||
this.withdrawWarning = '⚠️ Withdraw incomplete — server not responding correctly. Printing request amount instead.';
|
||||
}
|
||||
|
||||
// Prefer backend provided amount if available, otherwise use user's input
|
||||
const backendAmount = (typeof nestedAmt !== 'undefined') ? nestedAmt : (typeof flatAmt !== 'undefined' ? flatAmt : null);
|
||||
const printedAmount = backendAmount !== null ? backendAmount : Number(this.withdrawAmount);
|
||||
|
||||
// Prepare the same receipt text you used (denominations etc.)
|
||||
const receiptText = `
|
||||
🧾 Denomination Voucher
|
||||
2000 x _____________ = _____________
|
||||
@ -622,18 +656,18 @@ Total = ____________________________
|
||||
=====================================
|
||||
`;
|
||||
|
||||
|
||||
const now = new Date();
|
||||
const date = now.toISOString().split('T')[0];
|
||||
const time = now.toTimeString().split(' ')[0];
|
||||
|
||||
const previewReceipt = `
|
||||
Bangalore Turf Club
|
||||
DEPOSIT RECEIPT
|
||||
WITHDRAW RECEIPT
|
||||
-------------------------------
|
||||
Operator : ${this.withdrawOperatorId}
|
||||
Shroff : ${this.withdrawShroffId}
|
||||
Amount : ₹${this.withdrawAmount}
|
||||
Requested : ₹${this.withdrawAmount}
|
||||
Settled : ₹${printedAmount}
|
||||
Printed By: ${userName}
|
||||
Date : ${date}
|
||||
Time : ${time}
|
||||
@ -643,34 +677,45 @@ ${receiptText}
|
||||
|
||||
console.log(previewReceipt);
|
||||
|
||||
const payload = {
|
||||
// Prepare payload for printer (include backend data for reference)
|
||||
const backendData = json.data ? json.data : { ...json };
|
||||
const printData = {
|
||||
type: 'withdraw',
|
||||
ticketNumber: null,
|
||||
printedBy: userName,
|
||||
operatorId: this.withdrawOperatorId,
|
||||
shroffId: this.withdrawShroffId,
|
||||
amount: this.withdrawAmount,
|
||||
content: receiptText
|
||||
amountRequested: Number(this.withdrawAmount),
|
||||
amountSettled: printedAmount,
|
||||
content: receiptText,
|
||||
backend: backendData
|
||||
};
|
||||
|
||||
fetch('http://localhost:9100/print', {
|
||||
// Send print job
|
||||
try {
|
||||
const printResp = await fetch('http://localhost:9100/print', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload)
|
||||
})
|
||||
.then(response => {
|
||||
if (!response.ok) throw new Error(`Printer error: ${response.status}`);
|
||||
return response.text();
|
||||
})
|
||||
.then(result => {
|
||||
console.log("✅ Withdraw print successful:", result);
|
||||
})
|
||||
.catch(error => {
|
||||
console.error("❌ Withdraw print failed:", error);
|
||||
body: JSON.stringify(printData)
|
||||
});
|
||||
|
||||
this.closeWithdrawPopup();
|
||||
if (!printResp.ok) throw new Error(`Printer HTTP ${printResp.status}`);
|
||||
const printResult = await printResp.text();
|
||||
console.log("✅ Withdraw print successful:", printResult);
|
||||
} catch (printErr) {
|
||||
console.error("❌ Withdraw print failed:", printErr);
|
||||
this.withdrawWarning = '❌ Print failed. Check printer server.';
|
||||
}
|
||||
|
||||
// close withdraw modal
|
||||
this.closeWithdrawPopup();
|
||||
|
||||
} catch (err) {
|
||||
console.error("❌ Withdraw API call failed:", err);
|
||||
this.withdrawWarning = '❌ Withdraw API call failed. Please try again.';
|
||||
}
|
||||
}
|
||||
//----------------------------------------------PRINT WITHDRAW TICKET ENDS HERE -----------------------------
|
||||
|
||||
//----------------------------------------------PRINT WITHDRAW TICKET ENDS HERE -----------------------------
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user