|  |  |  | @ -1816,6 +1816,7 @@ const today = new Date(); | 
			
		
	
		
			
				
					|  |  |  |  | const datePart = today.toISOString().slice(0, 10).replace(/-/g, ''); // YYYYMMDD
 | 
			
		
	
		
			
				
					|  |  |  |  | const randomDigit = Math.floor(Math.random() * 10); // 0–9
 | 
			
		
	
		
			
				
					|  |  |  |  | const bookingId = `ARM${datePart}${randomDigit}`; | 
			
		
	
		
			
				
					|  |  |  |  | const amount_due = matchedSupplier.quoted_amount-matchedSupplier.advance_paid | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     const newBooking = new Tankerbooking({ | 
			
		
	
		
			
				
					|  |  |  |  |         bookingid: bookingId, | 
			
		
	
	
		
			
				
					|  |  |  | @ -1830,7 +1831,9 @@ const bookingId = `ARM${datePart}${randomDigit}`; | 
			
		
	
		
			
				
					|  |  |  |  |       supplierName: supplier.suppliername, | 
			
		
	
		
			
				
					|  |  |  |  |       supplierPhone: supplier.phone, | 
			
		
	
		
			
				
					|  |  |  |  |       supplierAddress: customer.address, | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       amount_paid: String(matchedSupplier.advance_paid), | 
			
		
	
		
			
				
					|  |  |  |  |       amount_due: String(amount_due), | 
			
		
	
		
			
				
					|  |  |  |  |       advance_reference_number: matchedSupplier.advance_ref_number, | 
			
		
	
		
			
				
					|  |  |  |  |       type_of_water: requestedBooking.type_of_water, | 
			
		
	
		
			
				
					|  |  |  |  |       capacity: requestedBooking.capacity, | 
			
		
	
		
			
				
					|  |  |  |  |       quantity: requestedBooking.quantity, | 
			
		
	
	
		
			
				
					|  |  |  | @ -2076,3 +2079,55 @@ exports.updatestatusForSupplier = async (req, reply) => { | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | exports.updateadvanceForSupplier = async (req, reply) => { | 
			
		
	
		
			
				
					|  |  |  |  |   try { | 
			
		
	
		
			
				
					|  |  |  |  |     const { _id } = req.params; | 
			
		
	
		
			
				
					|  |  |  |  |     const { supplierId, advance_paid,advance_ref_number } = req.body; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if (!_id) { | 
			
		
	
		
			
				
					|  |  |  |  |       return reply.code(400).send({ status_code: 400, message: '_id (param) is required' }); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |     if (!supplierId) { | 
			
		
	
		
			
				
					|  |  |  |  |       return reply.code(400).send({ status_code: 400, message: 'supplierId (body) is required' }); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |   | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // Map short keywords to the stored values
 | 
			
		
	
		
			
				
					|  |  |  |  |   | 
			
		
	
		
			
				
					|  |  |  |  |    | 
			
		
	
		
			
				
					|  |  |  |  |     // otherwise keep the original (but normalized) value
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // Atomic update using positional $ operator
 | 
			
		
	
		
			
				
					|  |  |  |  |     const filter = { _id, 'requested_suppliers.supplierId': supplierId }; | 
			
		
	
		
			
				
					|  |  |  |  |     const update = { $set: { 'requested_suppliers.$.advance_paid': advance_paid,'requested_suppliers.$.advance_ref_number': advance_ref_number } }; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     const updated = await RequestedBooking.findOneAndUpdate(filter, update, { | 
			
		
	
		
			
				
					|  |  |  |  |       new: true, | 
			
		
	
		
			
				
					|  |  |  |  |       runValidators: true, | 
			
		
	
		
			
				
					|  |  |  |  |     }).lean(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     if (!updated) { | 
			
		
	
		
			
				
					|  |  |  |  |       // either booking _id not found OR supplierId not found inside requested_suppliers
 | 
			
		
	
		
			
				
					|  |  |  |  |       const bookingExists = await RequestedBooking.findById(_id).lean(); | 
			
		
	
		
			
				
					|  |  |  |  |       if (!bookingExists) { | 
			
		
	
		
			
				
					|  |  |  |  |         return reply.code(404).send({ status_code: 404, message: `Booking with _id ${_id} not found` }); | 
			
		
	
		
			
				
					|  |  |  |  |       } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       // booking exists but supplier entry missing
 | 
			
		
	
		
			
				
					|  |  |  |  |       return reply.code(404).send({ | 
			
		
	
		
			
				
					|  |  |  |  |         status_code: 404, | 
			
		
	
		
			
				
					|  |  |  |  |         message: `Supplier ${supplierId} not found in requested_suppliers for booking ${_id}`, | 
			
		
	
		
			
				
					|  |  |  |  |       }); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     return reply.code(200).send({ | 
			
		
	
		
			
				
					|  |  |  |  |       status_code: 200, | 
			
		
	
		
			
				
					|  |  |  |  |       message: `status updated for supplier ${supplierId}`, | 
			
		
	
		
			
				
					|  |  |  |  |       data: updated, | 
			
		
	
		
			
				
					|  |  |  |  |     }); | 
			
		
	
		
			
				
					|  |  |  |  |   } catch (err) { | 
			
		
	
		
			
				
					|  |  |  |  |     console.error('updatestatusForSupplier error:', err); | 
			
		
	
		
			
				
					|  |  |  |  |     throw boom.boomify(err); | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  | }; | 
			
		
	
	
		
			
				
					|  |  |  | 
 |