Файл: Проектирование реализации операций бизнес-процесса «Складской учёт» ( Аналитическая часть ).pdf
Добавлен: 15.05.2023
Просмотров: 257
Скачиваний: 2
СОДЕРЖАНИЕ
1.1. Выбор комплекса задач автоматизации
1.2. Характеристика существующих бизнес-процессов
1.3. Характеристика документооборота, возникающего при решении задачи
1.4. Обоснование проектных решений по информационному обеспечению
1.5. Обоснование проектных решений по программному обеспечению
2.1. Информационная модель и её описание
2.2. Характеристика нормативно-справочной, входной и оперативной информации
2.3. Характеристика результатной информации
2.4. Общие положения (дерево функций и сценарий диалога)
2.5. Характеристика базы данных
);
return $this->redirectToRoute('site_otgruzs_edit',array('otgruz' => $otgruz->getId(), 'step' => 1));
}
$this->view['otgruz'] = null;
$this->forms['otgruz'] = $form->createView();
$this->navigation = array('active' => 'otgruzs');
return $this->render('AppBundle:Otgruzs:otgruz1.html.twig');
}
/**
* @param Otgruz $otgruz
* @return RedirectResponse|Response
* @Config\Route("/otgruzs/{otgruz}/edit/{step}", name = "site_otgruzs_edit")
* @Config\ParamConverter("otgruz", options = {"mapping": {"otgruz": "id"}})
*/
public function editAction(Otgruz $otgruz, $step)
{
if ($step > 4) {
$step = 4;
}
switch ($step) {
//общие данные
case 1:
$form = $this->createForm(new OtgruzFormType(), $otgruz);
if ($this->request->isMethod('POST')) {
$form->handleRequest($this->request);
if ($form->isSubmitted() && $form->isValid()) {
$otgruz->setUser($this->user);
$this->manager->persist($otgruz);
$this->manager->flush();
$this->addNotice('success',
'otgruzs.html.twig',
array('notice' => 'changed', 'caption' => $otgruz->getId())
);
return $this->redirectToRoute(
'site_otgruzs_edit',
array('otgruz' => $otgruz->getId(), 'step' => 1)
);
}
}
$this->view['otgruz'] = $otgruz;
$this->forms['otgruz'] = $form->createView();
break;
//список товаров
case 2:
$form = $this->createForm(new OtgruzProductFormType());
$products=$this->getRepository('OtgruzProduct')->createQueryBuilder('op')
->leftJoin('op.product','p')
->where('p.deleted <> 1')
->andWhere('op.otgruz = :otgruz')
->setParameters(array('otgruz'=>$otgruz))
->otgruzBy('p.category')->getQuery()->getResult();
if ($this->request->isXmlHttpRequest() && $this->request->isMethod('POST')) {
return $this->handleProductsAjaxRequest();
}
if ($this->request->isMethod('POST')) {
$form->handleRequest($this->request);
if ($form->isSubmitted() && $form->isValid()) {
/** @var OtgruzProduct $otgruzproduct */
$otgruzproduct = $form->getData();
$otgruzproduct->setOtgruz($otgruz);
$otgruzproduct->setPrice($otgruzproduct->getProduct()->getPrice());
$this->manager->persist($otgruzproduct);
$this->manager->flush();
$otgruz->refreshCurrency();
$this->manager->persist($otgruz);
$this->manager->flush();
return $this->redirectToRoute(
'site_otgruzs_edit',
array('otgruz' => $otgruz->getId(), 'step' => 2)
);
}
}
$this->view['otgruz'] = $otgruz;
$this->view['products'] = $products;
$this->forms['otgruzproduct'] = $form->createView();
$this->navigation = array('active' => 'otgruzs');
return $this->render('AppBundle:Otgruzs:otgruz2.html.twig');
break;
//список услуг
case 3:
$form = $this->createForm(new OtgruzServiceFormType());
$services=$this->getRepository('OtgruzService')->createQueryBuilder('os')
->leftJoin('os.service','s')
->where('s.deleted <> 1')
->andWhere('os.otgruz = :otgruz')
->setParameters(array('otgruz'=>$otgruz))
->otgruzBy('s.caption')->getQuery()->getResult();
if ($this->request->isMethod('POST')) {
$form->handleRequest($this->request);
if ($form->isSubmitted() && $form->isValid()) {
/** @var OtgruzService $otgruzservice */
$otgruzservice = $form->getData();
$otgruzservice->setOtgruz($otgruz);
$otgruzservice->setPrice($otgruzservice->getService()->getPrice());
$this->manager->persist($otgruzservice);
$this->manager->flush();
$otgruz->refreshCurrency();
$this->manager->persist($otgruz);
$this->manager->flush();
return $this->redirectToRoute(
'site_otgruzs_edit',
array('otgruz' => $otgruz->getId(), 'step' => 3)
);
}
}
$this->view['otgruz'] = $otgruz;
$this->view['services'] = $services;
$this->forms['otgruzservice'] = $form->createView();
$this->navigation = array('active' => 'otgruzs');
return $this->render('AppBundle:Otgruzs:otgruz3.html.twig');
break;
//доки
case 4:
$this->view['otgruz'] = $otgruz;
$this->navigation = array('active' => 'otgruzs');
return $this->render('AppBundle:Otgruzs:otgruz4.html.twig');
break;
}
$this->navigation = array('active' => 'otgruzs');
return $this->render('AppBundle:Otgruzs:otgruz'.$step.'.html.twig');
}
protected function handleProductsAjaxRequest()
{
$category = $this->request->get('category', null);
if (is_null($category)) return new JsonResponse();
$products=$this->getRepository('Product')->createQueryBuilder('p')
->select('p.id as id')
->where('p.category = :category')
->andWhere('p.deleted=0')
->setParameters(array('category'=> $category))
->getQuery()->getResult(Query::HYDRATE_ARRAY);
return new JsonResponse($products);
}
/**
* @param Otgruz $otgruz
* @return Response
* @Config\Route("/otgruzs/{otgruz}/remove", name = "site_otgruzs_remove")
* @Config\ParamConverter("otgruz", options = {"mapping": {"otgruz": "id"}})
*/
public function removeAction(Otgruz $otgruz)
{
$otgruz->setDeleted(true);
$this->manager->persist($otgruz);
$this->manager->flush();
return $this->redirectToRoute('site_otgruzs_index');
}
/**
* @param Otgruz $otgruz
* @return Response
* @Config\Route("/otgruzs/{otgruz}/changestatus/{status}", name = "site_otgruzs_changestatus")
* @Config\ParamConverter("otgruz", options = {"mapping": {"otgruz": "id"}})
*/
public function changestatusAction(Otgruz $otgruz, $status)
{
$oldstatus=$otgruz->getStatus()->getId();
/** @var OtgruzStatus $newstatus**/
$newstatus = $this->getRepository('OtgruzStatus')->findOneBy(array('id'=>$status));
$otgruz->setStatus($newstatus);
//отправляем уведомление пользователю
$descriptiontext='';
$notifusers=$otgruz->getSpecs();
switch ($status) {
case 2:
$descriptiontext="Вам был назначен новый заказ № ".$otgruz->getId().". Не забудьте подтвердить принятие в работу. <a href='".$this->generateUrl('site_otgruzs_edit', array('otgruz'=>$otgruz->getId(), 'step'=>1))."'>Подробнее</a> ";
break;
case 3:
//если перед этим был статус "Ждет подтверждения"
if ($oldstatus==4) {
$descriptiontext="Заказ № ".$otgruz->getId()." был вернут в работу. <a href='".$this->generateUrl('site_otgruzs_edit', array('otgruz'=>$otgruz->getId(), 'step'=>1))."'>Подробнее</a> ";
//отменяем выбор поставщика
foreach ($otgruz->getOtgruzproviders() as $otgruzprovider) {
$otgruzprovider->setSelected(false);
$this->manager->persist($otgruzprovider);
$this->manager->flush();
}
}
//иначе увеомление админу
else {
$descriptiontext="Пользователь ".$this->getUser()->getUserfio()." принял заказ № ".$otgruz->getId()." в работу. <a href='".$this->generateUrl('site_otgruzs_edit', array('otgruz'=>$otgruz->getId(), 'step'=>1))."'>Подробнее</a> ";
$notifusers=array();
/** @var User $notifuser**/
$notifuser = $this->getRepository('User')->findOneBy(array('username'=>'admin'));
array_push($notifusers,$notifuser );
}
break;
case 5: $descriptiontext="Выбор поставщика в заказе №".$otgruz->getId()." был утвержден. <a href='".$this->generateUrl('site_otgruzs_edit', array('otgruz'=>$otgruz->getId(), 'step'=>1))."'>Подробнее</a>";