return co(function*(){ yield* _co.coEach(viewModels, function*(viewModel){ viewModel.quantity = _.parseInt(viewModel.quantity); if(viewModel.quantity === 0) return; var shipping = yield model.findOne({_id: objectId(viewModel.shippingId)}); if(!shipping) return; var item = _.find(shipping.items, function(item){ return item._id.toString() === viewModel.itemId.toString(); }); if(!item) return; var recapitulation = _.find(item.recapitulations, function(recapitulation){ return recapitulation._id.toString() === viewModel.recapitulationId.toString(); }); if(!recapitulation || recapitulation.available === 0) return; if(viewModel.quantity > recapitulation.available) viewModel.quantity = recapitulation.available; var delivery = { "recapitulation": recapitulation._id, "date": new Date(), "quantity": viewModel.quantity, "available": viewModel.quantity, "weight": (item.dimensions.weight / item.colli.quantity) * viewModel.quantity, "limasColor": viewModel.limasColor, "relationColor": viewModel.relationColor, "vehicleNumber": viewModel.vehicleNumber, "driver": viewModel.driver, "notes": viewModel.notes, "created": { "user": user._id, "date": new Date() }, "modified":{ "user": user._id} }; item.colli.delivered += viewModel.quantity; recapitulation.available -= viewModel.quantity; shipping.colli.delivered += viewModel.quantity; if(item.colli.delivered === item.colli.quantity) item.status = TERKIRIM; else item.status = TERKIRIM_SEBAGIAN; item.deliveries.push(delivery); yield shipping.save(); }); });
return co(function* (){ yield* _co.coEach(viewModels, function*(viewModel){ var shipping = yield model.findOne({_id: objectId(viewModel.shippingId)}); if(!shipping) return; shipping.returnInfo = { date: new Date(), filePath: viewModel.filePath ? viewModel.filePath : null, stamped: viewModel.stamped ? true : false, signed: viewModel.signed ? true : false, receipt: viewModel.receipt ? true : false, accepted: viewModel.accepted ? true : false, limasColor: viewModel.limasColor, relationColor: viewModel.relationColor, relationCode: viewModel.relationCode, notes: viewModel.notes, concernedPerson: viewModel.concernedPerson, created: user._id }; shipping.returned = true; var notification = new notificationModel(); notification.event = 'Retur spb ' + shipping.spbNumber + ' ' + (viewModel.accepted ? 'diterima' : 'ditolak'); notification.filePath = shipping.returnInfo.filePath; notification.date = new Date(); notification.user = user._id; yield shipping.save(); yield notification.save(); }); });
return co(function*(){ yield* _co.coEach(viewModels, function*(viewModel){ viewModel.quantity = _.parseInt(viewModel.quantity); if(viewModel.quantity === 0) return; var shipping = yield model.findOne({_id: objectId(viewModel.shippingId)}); if(!shipping) return; var item = _.find(shipping.items, function(item){ return item._id.toString() === viewModel.itemId.toString(); }); if(!item) return; var delivery = _.find(item.deliveries, function(delivery){ return delivery._id.toString() === viewModel.deliveryId.toString(); }); if(!delivery || delivery.available === 0) return; var recapitulation = _.find(item.recapitulations, function(recapitulation){ return recapitulation._id.toString() === delivery.recapitulation.toString(); }); if(!recapitulation) return; if(viewModel.quantity > delivery.available) viewModel.quantity = delivery.available; item.colli.delivered -= viewModel.quantity; shipping.colli.delivered -= viewModel.quantity; recapitulation.available += viewModel.quantity; delivery.available -= viewModel.quantity; delivery.quantity -= viewModel.quantity; delivery.weight = (item.dimensions.weight / item.colli.quantity) * delivery.available; if(item.colli.delivered > 0) item.status = TERKIRIM_SEBAGIAN; else if(item.colli.available === 0) item.status = TEREKAP; else item.status = TEREKAP_SEBAGIAN; yield shipping.save(); }); });
return co(function*(){ yield* _co.coEach(viewModels, function*(viewModel){ var shipping = yield model.findOne({_id: objectId(viewModel._id)}); if(!shipping) return; shipping.confirmed = true; yield shipping.save(); }); });