trinion_mrp-1.0.x-dev/src/TrinionHelper.php

src/TrinionHelper.php
<?php

namespace Drupal\trinion_mrp;

use Drupal\Core\Database\Connection;
use Drupal\node\Entity\Node;

class TrinionHelper {

  /**
   * The database connection.
   *
   * @var \Drupal\Core\Database\Connection
   */
  protected $connection;

  /**
   * Constructs a TrinionHelper object.
   *
   * @param \Drupal\Core\Database\Connection $connection
   *   The database connection.
   */
  public function __construct(Connection $connection) {
    $this->connection = $connection;
  }

  public function getItemsFromMrpReportForOrder(Node $node, $source) {
    $calendar = \Drupal::state()->get('trinion_mrp_proizvodstvenniy_kalendar');
    $mrp_start_date = date('Y-m-d', strtotime($node->get('field_tp_data')->getString()));
    $mrp_period_length = $node->get('field_mrp_period_length_days')->getString();
    $tovar_released_days = [];
    foreach ($calendar['days'] as $key => $day) {
      if ($mrp_start_date == $day['date']) {
        $mrp_start_date_key = $key;
        break;
      }
    }

    foreach ($node->get('field_mrp_table') as $table) {
      $table = json_decode($table->getString());
      $tovar = Node::load($table->tovar_id);

      $istochnik_popolneniya = $tovar->get('field_tp_istochnik_popolneniya')->getString();
      if ($istochnik_popolneniya == $source) {
        foreach ($table->planned_order_released as $period_num => $count) {
          if ($count) {
            $release_day_num = $mrp_start_date_key + $period_num * $mrp_period_length;
            $tovar_released_days[$calendar['days'][$release_day_num]['date']][] = [
              'tovar_id' => $table->tovar_id,
              'unit' => $table->unit,
              'harakteristika_tid' => $table->harakteristika_tid,
              'count' => $count,
              'day_num' => $release_day_num,
            ];
          }
        }
      }
    }
    $tovar_released_days_vendors = [];
    foreach ($tovar_released_days as $day => $tovari) {
      foreach ($tovari as $release) {
        $tovar = Node::load($release['tovar_id']);
        if ($source == 1) {
          $destination_object = $tovar->get('field_tp_postavschik')->getString();
        }
        else
          $destination_object = $tovar->get('field_mrp_rabochiy_centr')->getString();
        if ($destination_object) {
          for ($i = 0; $i < 8; $i++) {
            if (!empty($calendar['days'][$release['day_num'] - $i]['w_start'])) {
              $week_start = $calendar['days'][$release['day_num'] - $i];
              $tovar_released_days_vendors[$week_start['date']][$destination_object][] = $release;
              break;
            }
          }
        }
        else {
          \Drupal::messenger()->addError('Vendor is not set for product ' . $tovar->label());
        }
      }
    }
    return $tovar_released_days_vendors;
  }

  public function getMrpRalatedOrders(Node $node, $type) {
    $query = \Drupal::entityQuery('node')
      ->condition('type', $type)
      ->condition('field_mrp_report', $node->id());
    $res = $query->accessCheck()->execute();
    return array_values($res);
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc