|
|
|
@ -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);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|