trinion_mrp-1.0.x-dev/src/Controller/SozdanieZakazaPostavshiku.php

src/Controller/SozdanieZakazaPostavshiku.php
<?php

namespace Drupal\trinion_mrp\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\node\Entity\Node;
use Drupal\trinion_tp\Controller\UtverzhdenieDokumenta;

/**
 * Создание Заказа поставщику
 */
class SozdanieZakazaPostavshiku extends ControllerBase {

  /**
   * Builds the response.
   */
  public function build(Node $node) {
    $tovar_released_days_vendors = \Drupal::service('trinion_mrp.helper')->getItemsFromMrpReportForOrder($node, 1);
    if ($tovar_released_days_vendors) {
      $uid = \Drupal::currentUser()->id();
      foreach ($tovar_released_days_vendors as $date => $vendors) {
        foreach ($vendors as $vendor => $releases) {
          $stroki = [];
          foreach ($releases as $release) {
            $tovar = Node::load($release['tovar_id']);
            $stroka_data = [
              'type' => 'tp_stroka_dokumenta_uit',
              'title' => $tovar->label(),
              'uid' => $uid,
              'status' => 1,
              'field_tp_artikul' => $tovar->get('field_tp_artikul')->getString(),
              'field_tp_cena' => floatval($tovar->get('field_tp_cena')->getString()),
              'field_tp_edinica_izmereniya' => ['target_id' => $release['unit']],
              'field_tp_tovar' => ['target_id' => $release['tovar_id']],
              'field_tp_kolichestvo' => $release['count'],
            ];
            if ($release['harakteristika_tid'])
              $stroka_data['field_tp_kharakteristika_tovara'] = $release['harakteristika_tid'];
            $stroka = Node::create($stroka_data);
            $stroka->save();
            $stroki[] = ['target_id' => $stroka->id()];
          }

          $zakaz_data = [
            'type' => 'zakaz_postavschiku',
            'title' => \Drupal::service('trinion_crm.helper')->getNextDocumentNumber('zakaz_postavschiku'),
            'uid' => $uid,
            'status' => 1,
            'field_tp_data' => $date . 'T00:00:00',
            'field_tp_poluchit_ne_pozdnee' => $date,
            'field_tp_stroki' => $stroki,
            'field_tp_zakaz_dlya' => ['target_id' => $vendor],
            'field_tp_otvetstvennyy' => ['target_id' => $uid],
            'field_mrp_report' => ['target_id' => $node->id()],
          ];
          $zakaz = Node::create($zakaz_data);
          $zakaz->save();
          \Drupal::messenger()->addStatus(t('Purchase order № @num created', ['@num' => $zakaz->label()]));
          $utverzhdenie = new UtverzhdenieDokumenta();
          $utverzhdenie->build($zakaz, 2);
        }
      }
    }
  }

  public function getNomer() {
    return \Drupal::service('trinion_tp.helper')->getNextDocumentNumber('zakaz_postavschiku');
  }
}

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

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