Exemple #1
0
   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();
      });
   });
Exemple #2
0
   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();
      });
   });
Exemple #3
0
  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();
     });
  });
Exemple #4
0
   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();
       });
   });