`function checkCashRegister(price, cash, cid) {
let change = cash - price;
console.log(change);//1st log
let emptyArr = [];
var changeDue = {
“ONE HUNDRED”: 0,
“TWENTY”: 0,
“TEN”: 0,
“FIVE”: 0,
“ONE”: 0,
“QUARTER”: 0,
“DIME”: 0,
“NICKEL”: 0,
“PENNY”: 0
};
let sumChDue = 0;
let cidCopy = cid.slice();
console.log(cidCopy)//2nd log
//compute total cash in drawer
let sumCid = 0;
for (let i = 0; i < cid.length; i++){
sumCid += cid[i][1]
}
sumCid = sumCid.toFixed(2)
console.log(sumCid);//3rd log
//define fxn for the change due
function changedue(chng) {
while ((chng/100) >= 1.0 && cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("ONE HUNDRED"))][1] > 0 ){
changeDue["ONE HUNDRED"] += 100;
cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("ONE HUNDRED"))][1] -= 100;
chng-=100;
}
while ((chng/20) >= 1.0 && cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("TWENTY"))][1] > 0){
changeDue["TWENTY"] = changeDue["TWENTY"] + 20;
cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("TWENTY"))][1] -= 20;
chng-=20;}
while ((chng/10) >= 1.0 && cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("TEN"))][1] > 0){
changeDue["TEN"] = changeDue["TEN"] + 10;
cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("TEN"))][1] -= 10;
chng-=10;}
while ((chng/5) >= 1.0 && cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("FIVE"))][1] > 0){
changeDue["FIVE"] = changeDue["FIVE"] + 5;
cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("FIVE"))][1] -= 5;
chng-=5;}
while ((chng/1) >= 1.0 && cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("ONE"))][1] > 0){
changeDue["ONE"] = changeDue["ONE"] + 1;
cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("ONE"))][1] -= 1;
chng-=1;}
while ((chng/0.25) >= 1.0 && cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("QUARTER"))][1] > 0){
//chng = chng.toFixed(2);
changeDue["QUARTER"] = changeDue["QUARTER"] + 0.25;
cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("QUARTER"))][1] -= 0.25;
chng-=0.25;
}
while ((chng/0.1) >= 1.0 && cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("DIME"))][1] > 0){
//chng = chng.toFixed(2);
changeDue["DIME"] = changeDue["DIME"] + 0.1;
cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("DIME"))][1] -= 0.1;
chng-=0.1;}
while ((chng/0.05) >= 1.0 && cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("NICKEL"))][1] > 0){
//chng = chng.toFixed(2);
changeDue["NICKEL"] = changeDue["NICKEL"] + 0.05;
cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("NICKEL"))][1] -= 0.05;
chng-=0.05;}
while ((chng/0.01) >= 1.0 && cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("PENNY"))][1] > 0.00){
chng = chng.toFixed(2);
changeDue["PENNY"] = changeDue["PENNY"] + 0.01;
cidCopy[cidCopy.findIndex(cidCopy => cidCopy.includes("PENNY"))][1] -= 0.01;
chng-=0.01;
}
//remove coins and bills with zero values
for (const [key, value] of Object.entries(changeDue)) {
if (changeDue[key] > 0){
sumChDue += value;
emptyArr.push([key, value]);
}
} console.log(changeDue);
console.log(sumChDue)
return emptyArr;
}//end of changedue function
if (sumCid < change){
return {status: “INSUFFICIENT_FUNDS”, change: []}
}
//else if (sumChDue !== change){
//return {status: “INSUFFICIENT_FUNDS”, change: []}
//}
else if (sumCid == change){
return {status: “CLOSED”, change:cid}
}
else {
return {status:“OPEN”, change: changedue(change)}
}
}// end of checkCashRegister function
Output:
0.5
[ [ ‘PENNY’, 0.01 ],
[ ‘NICKEL’, 0 ],
[ ‘DIME’, 0 ],
[ ‘QUARTER’, 0 ],
[ ‘ONE’, 1 ],
[ ‘FIVE’, 0 ],
[ ‘TEN’, 0 ],
[ ‘TWENTY’, 0 ],
[ ‘ONE HUNDRED’, 0 ] ]
1.01
{ ‘ONE HUNDRED’: 0,
TWENTY: 0,
TEN: 0,
FIVE: 0,
ONE: 0,
QUARTER: 0,
DIME: 0,
NICKEL: 0,
PENNY: 0.01 }
0.01
{ status: ‘OPEN’, change: [ [ ‘PENNY’, 0.01 ] ] }
0.5
[ [ ‘PENNY’, 1.01 ],
[ ‘NICKEL’, 2.05 ],
[ ‘DIME’, 3.1 ],
[ ‘QUARTER’, 4.25 ],
[ ‘ONE’, 90 ],
[ ‘FIVE’, 55 ],
[ ‘TEN’, 20 ],
[ ‘TWENTY’, 60 ],
[ ‘ONE HUNDRED’, 100 ] ]
335.41
{ ‘ONE HUNDRED’: 0,
TWENTY: 0,
TEN: 0,
FIVE: 0,
ONE: 0,
QUARTER: 0.5,
DIME: 0,
NICKEL: 0,
PENNY: 0 }
0.5
{ status: ‘OPEN’, change: [ [ ‘QUARTER’, 0.5 ] ] }`