Пример #1
0
 /**
  * (non-PHPdoc)
  * @see Application\Cron.Cronable::run()
  */
 public function run()
 {
     $now = new \DateTime(date("Y-m-d", mktime(0, 0, 0, date("m"), date("d"), date("Y"))));
     $bookings = BookingQuery::create()->whereAdd(Booking::ETA, \Zend_Date::now()->get('YYYY-MM-dd'), BookingQuery::GREATER_OR_EQUAL)->find();
     $eventDispatcher = $this->getEventDispatcherService();
     while ($booking = $bookings->read()) {
         $eta = new \DateTime($booking->getEta());
         $interval = date_diff($eta, $now);
         switch ($interval->format('%r%d')) {
             case self::FIFTEEN_DAYS_BEFORE:
                 $eventDispatcher->createBookingNotification($booking, BookingEvent::BOOKING_15_DAYS_NOTIFICATION);
                 break;
             case self::SEVEN_DAYS_BEFORE:
                 $eventDispatcher->createBookingNotification($booking, BookingEvent::BOOKING_7_DAYS_NOTIFICATION);
                 break;
             case self::THREE_DAYS_BEFORE:
                 $eventDispatcher->createBookingNotification($booking, BookingEvent::BOOKING_3_DAYS_NOTIFICATION);
                 break;
             case self::TWO_DAYS_BEFORE:
                 $eventDispatcher->createBookingNotification($booking, BookingEvent::BOOKING_2_DAYS_NOTIFICATION);
                 break;
             case self::TODAY:
                 $purchaseOrders = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_FOLIO_IMPORT, $booking->getIdFolioImport())->find();
                 while ($purchaseOrder = $purchaseOrders->read()) {
                     $purchaseOrderEntries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $purchaseOrder->getIdPurchaseOrder())->find();
                     $eventDispatcher->dispatchPurchaseOrderEvent($purchaseOrder, PurchaseOrderEvent::PURCHASEORDER_ARRIVED, $purchaseOrderEntries);
                 }
                 break;
         }
     }
     $quarantineRecoveryDeadlines = WarehouseEntranceQuarantineRecoveryDeadlineQuery::create()->whereAdd(WarehouseEntranceQuarantineRecoveryDeadline::RECOVERY_DEADLINE, \Zend_Date::now()->get('YYYY-MM-dd'), WarehouseEntranceQuarantineRecoveryDeadlineQuery::GREATER_OR_EQUAL)->find();
     while ($quarantineRecoveryDeadline = $quarantineRecoveryDeadlines->read()) {
         $deadline = new \DateTime($quarantineRecoveryDeadline->getRecoveryDeadline());
         $interval = date_diff($deadline, $now);
         switch ($interval->format('%r%d')) {
             case self::TODAY:
                 if (WarehouseEntranceQuery::create()->whereAdd(WarehouseEntrance::ID_WAREHOUSE_ENTRANCE, $quarantineRecoveryDeadline->getIdWarehouseEntrance())->count()) {
                     $warehouseEntry = WarehouseEntranceQuery::create()->whereAdd(WarehouseEntrance::ID_WAREHOUSE_ENTRANCE, $quarantineRecoveryDeadline->getIdWarehouseEntrance())->findOne();
                     $eventDispatcher->createWarehouseEntranceNotification($warehouseEntry, WarehouseEntranceEvent::WAREHOUSE_ENTRIES_QUARANTIES_DEADLINE, $quarantineRecoveryDeadline->getRecoveryDeadline());
                 }
         }
     }
 }
 /**
  *
  *
  */
 public function saveQuarantineRecoveryControlAction()
 {
     $deadline = $this->getRequest()->getParam('deadline');
     $notes = $this->getRequest()->getParam('commentaries');
     $id = $this->getRequest()->getParam('idWarehouseEntrance');
     $line = $this->getRequest()->getParam('idWarehouseEntranceProducts');
     $SapConnection = new SAPConnectorClient();
     $warehouseEntry = WarehouseEntranceQuery::create()->findByPK($id);
     $warehouseEntry->setComments($notes);
     $SapConnection->updateWarehouseEntry($warehouseEntry);
     $warehouseEntranceLine = WarehouseEntranceProductQuery::create()->whereAdd(WarehouseEntranceProduct::ID_WAREHOUSE_ENTRANCE, $id)->whereAdd(WarehouseEntranceProduct::ID_WAREHOUSE_ENTRANCE_PRODUCT, $line)->findOne();
     $recoveryDeadlineQuery = WarehouseEntranceQuarantineRecoveryDeadlineQuery::create()->whereAdd(WarehouseEntranceQuarantineRecoveryDeadline::ID_WAREHOUSE_ENTRANCE, $warehouseEntranceLine->getIdWarehouseEntrance())->whereAdd(WarehouseEntranceQuarantineRecoveryDeadline::ID_WAREHOUSE_ENTRANCE_LINE, $warehouseEntranceLine->getIdWarehouseEntranceProduct())->find();
     $this->getCatalog('WarehouseEntranceQuarantineRecoveryDeadlineCatalog')->beginTransaction();
     while ($recoveryDeadline = $recoveryDeadlineQuery->read()) {
         try {
             $this->getCatalog('WarehouseEntranceQuarantineRecoveryDeadlineCatalog')->deleteById($recoveryDeadline->getIdWarehouseEntranceQuarantineRecoveryDeadline());
         } catch (Exception $e) {
             $this->setFlash('error', $e->getMessage());
             $this->_redirect('warehouse-entrance/quarantine-list');
         }
     }
     foreach ($deadline as $value) {
         if (!empty($value)) {
             $recoveryDeadline = new WarehouseEntranceQuarantineRecoveryDeadline();
             $recoveryDeadline->setIdWarehouseEntrance($warehouseEntranceLine->getIdWarehouseEntrance());
             $recoveryDeadline->setIdWarehouseEntranceLine($warehouseEntranceLine->getIdWarehouseEntranceProduct());
             $recoveryDeadline->setRecoveryDeadline($value);
             try {
                 $this->getCatalog('WarehouseEntranceQuarantineRecoveryDeadlineCatalog')->create($recoveryDeadline);
             } catch (Exception $e) {
                 echo $e->getMessage();
                 die;
                 $this->setFlash('error', $e->getMessage());
                 $this->_redirect('warehouse-entrance/quarantine-list');
             }
         }
     }
     $this->setFlash('ok', $this->i18n->_('The Quarantine Recovery Deadline has been saved.'));
     $this->getCatalog('WarehouseEntranceQuarantineRecoveryDeadlineCatalog')->commit();
     $this->_redirect('warehouse-entrance/quarantine-list');
 }