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');
}
}
