Автоматизированная система "Мониторинг закупок"
Разработка системы для автоматизации процесса подбора поставщиков. Выбор критериев качества для проектируемой автоматизированной системы и ее сравнение с аналогами. Расчет сметы затрат на создание программы, обоснование ее экономической эффективности.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 02.06.2017 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Затраты на ремонт вычислительной техники (СРЕМ) составляют 5 % от ее стоимости и рассчитываются:
Тогда затраты на оборудование с учетом его ремонта составляют:
3.2.3 Расчет затрат на услуги сторонних организаций
При разработке данного программного изделия потребовались услуги сторонних организаций по изготовлению плакатов и схем формата A1. Распечатка 6 листов ватмана формата А1 в количестве 6 шт. 80руб * 6 = 480руб.
3.2.4 Расчет затрат на заработную плату
В соответствии с главой 23 НКРФ доходы физических лиц за вычетом некоторых льгот подлежат обязательному налогообложению (налог на доходы физических лиц) и рассчитываются по формуле:
, (2)
- основная заработная плата;
- сумма к выплате, которая была оговорена с работником (12 000 руб.);
- налог на доходы с физических лиц (13%).
Таким образом,
3.2.5 Расчет затрат на дополнительную заработную плату
Расходы на дополнительную заработанную плату учитывают все выплаты непосредственно исполнителям за время непроработанное на производстве, но предусмотренное законодательством, в том числе: оплата очередных отпусков, компенсация за недоиспользованный отпуск, и др. Величина этих выплат составляет 20% от размера основной заработной платы
3.2.6 Расчет отчислений на социальные нужды
Расчет отчислений на социальные нужды производится в соответствии с главой 24 Налогового Кодекса РФ «Единый социальный налог (взнос)» и включает отчисления, производимые в фонды социального страхования, обязательного медицинского страхования и пенсионный фонд.
Ставки единого социального налога определяются в зависимости от величины налогооблагаемой базы. Величина единого социального налога рассчитывается по формуле:
, (3)
где - коэффициент отчисления на социальные нужды.
Коэффициент отчислений на социальные нужды (без учета льгот) складывается из следующих отчислений:
1. отчисление в фонд социального страхования составляет 4% от заработанной платы;
2. отчисление в федеральный бюджет составляет 28%
3. отчисление в фонд обязательного медицинского страхования составляет 3,6%
Отсюда:
3.2.7 Расчет расходов на налоги
Расчет расходов на налоги ведется с учетом налогов на имущество и налогов на транспортные средства.
Налог на имущество в данном случае не платится, поскольку все имеющееся в наличии имущество, включаемое в налогооблагаемую базу в соответствии с инструкцией «О порядке исчисления и уплаты в бюджет налога на имущество предприятий», используется на нужды образования, и, следовательно, налогом на имущество не облагается.
Налог на владельцев транспортных средств не платится, в связи с отсутствие транспортных средств, используемых для разработки информационной системы.
3.2.8 Расчет накладных расходов
Накладные расходы составляют 10% от суммы остальных расходов:
(4)
3.2.9 Расчет себестоимости программного изделия
Себестоимость изделия рассчитывается как сумма по всем выше перечисленным статьям затрат и составляет:
(5)
3.2.10 Расчет прибыли от реализации программного изделия
Величина прибыли соответствует сумме чистой прибыли, исчисленной из определенного процента от общих затрат. На определение этого процента влияет величина налога на прибыль, который в 2017 году составляет 24% от величины прибыли.
Расчет прибыли произведем исходя из нормы прибыли. Норма прибыли задана
Тогда прибыль, с учетом налога на прибыль рассчитывается по формуле:
(6)
3.2.11 Расчет цена реализации программного изделия
Значение цены формируется путем суммирования величины себестоимости и размера прибыли:
3.2.12 Расчет договорной цены реализации программного изделия
Значение договорной цены соответствует сумме цены продукции и налога на добавленную стоимость, который исчисляется из расчета 18% от этой цены.
(7)
Заключение
По результатам дипломного проекта можно сделать следующие выводы:
1) Была изучена предметная область, связанная с организацией процесса закупок в компании ООО «Профессионал»;
2) Были сформулированы требования к разрабатываемой информационной системе;
3) Была спроектирована структура информационной системы;
4) Были разработаны алгоритмы работы программных модулей;
5) Была разработана структура базы данных для хранения информации, необходимой для разработки;
6) Был разработан интерактивный пользовательский интерфейс, с помощью которого пользователи могут выполнять требуемые задачи;
7) Были изучены информационные системы, предназначенные для организации работы отдела закупок;
8) Был проведен сравнительный анализ изученных систем;
9) Была составлена смета затрат на реализацию информационной системы.
автоматизированный поставщик программа смета
Список использованных источников
1. ГОСТ 2.105 - 95. Общие требования к текстовым документам.
2. ГОСТ 7.32 - 2001. Отчет по научно-исследовательской работе. Структура и правила оформления.
3. ГОСТ 7.82-2001. Библиографическое описание электронных ресурсов.
4. ГОСТ 24.702-85 Эффективность автоматизированных систем управления.
5. ГОСТ Р 7.0.5-2008. Библиографическая запись. Библиографическое описание.
6. Алистер Коберн, Современные методы описания функциональных требований к системам, М.: издательство «Лори», 2017. - 288 с
9. Дунаев В. HTML, скрипты и стили / В. Дунаев. - Спб. : БХВ-Петербург, 2015. - 816 с.
10. Жадеев А. PHP для начинающих / А. Жадеев. - Спб.: «Питер», 2014. - 592 c.
11. Колисниченко Д. PHP и MySQL. Разработка WEB-приложений / Д. Колисниченков - Спб: БХВ-Петербург, 2013. - 560 с.
12. Конналли Т. Базы данных. Проектирование, реализация и сопровождение. Теория и практика / Т. Коналли, К. Бегг. - М.: Издательский дом «Вильямс», 2013. - 1093 c.
13. Лобова Г. Моделирование и анализ бизнес-процессов SADT. - М.: LAP Lambert Academic Publishing, 2014. - 352 c.
14. Макдональд, М. Созданиец Web-сайта. Недостающее руководство / М. Макдональд. - Спб. : БХВ-Петербург, 2013. - 624 с.
17. Маклаков С.В. BPwin и Erwin. CASE-средства разработки информационных систем / С.В. Маклаков. - М. : ДИАЛОГ-МИФИ, 2014. - 369 c.
Приложение А
Листинг программы.
<?php
namespace AppBundle\Controller;
use AppBundle\Entity\Notification;
use AppBundle\Entity\Order;
use AppBundle\Entity\OrderComment;
use AppBundle\Entity\OrderProduct;
use AppBundle\Entity\OrderProvider;
use AppBundle\Entity\OrderProviderComment;
use AppBundle\Entity\OrderStatus;
use AppBundle\Entity\ProviderProduct;
use AppBundle\Entity\User;
use AppBundle\Form\Type\OrderCommentFormType;
use AppBundle\Form\Type\OrderEndFormType;
use AppBundle\Form\Type\OrderFilterFormType;
use AppBundle\Form\Type\OrderFormType;
use AppBundle\Form\Type\OrderProductFormType;
use AppBundle\Form\Type\OrderProviderCommentFormType;
use Doctrine\ORM\Query;
use Sensio\Bundle\FrameworkExtraBundle\Configuration as Config;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
class OrderController extends InitializableController
{
/**
* @return RedirectResponse|Response
* @Config\Route(«/orders/index/{pagenum}», name = «site_orders_index», defaults={ «pagenum»: «1»})
*/
public function indexAction($pagenum=1)
{
$form=$this->createForm(new OrderFilterFormType());
$caption = null;
$form->handleRequest($this->request);
$ordersquery = $this->getRepository('Order')->createQueryBuilder('o')
->leftJoin('o.specs', 's')
->where('o.deleted = 0')
->orderBy('o.vip', 'DESC')
->addOrderBy('o.status', 'ASC')
->addOrderBy('o.plandate', 'ASC');
$ordersquerycount = $this->getRepository('Order')->createQueryBuilder('o')
->select('COUNT(DISTINCT o.id)')
->leftJoin('o.specs', 's')
->where('o.deleted = 0')
->orderBy('o.plandate', 'DESC');
if ($form->isSubmitted()&& $form->isValid()){
$id = $form->get('id')->getData();
$status=$form->get('status')->getData();
$spec=$form->get('spec')->getData();
}
if (!empty($id)){
$ordersquery->andWhere('o.id = :id')->setParameter('id', $id);
$ordersquerycount->andWhere('o.id = :id')->setParameter('id', $id);
}
if (!empty($status)){
$ordersquery->andWhere('o.status = :status')->setParameter('status', $status);
$ordersquerycount->andWhere('o.status = :status')->setParameter('status', $status);
}
if (!empty($spec)){
$ordersquery->andWhere('s.id = :spec')->setParameter('spec', $spec);
$ordersquerycount->andWhere('s.id = :spec')->setParameter('spec', $spec);
}
$count=$ordersquerycount->getQuery()->getSingleScalarResult();
$pages = floor($count / 20) + ($count % 20 > 0 ? 1 : 0);
if ($pages < 1) $pages = 1;
if ($pagenum > $pages) $pagenum = $pages;
$orders = $ordersquery->setFirstResult(($pagenum - 1) * 20)
->setMaxResults(20)
->getQuery()->getResult();
$this->view['orders'] = $orders;
$this->view['form'] = $form->createView();
$this->view['page']=$pagenum;
$this->view['pages']=$pages;
$this->navigation = array('active' =>'orders');
return $this->render('AppBundle:Orders:index.html.twig');
}
/**
* @return RedirectResponse|Response
* @Config\Route(«/orders/add», name = «site_orders_add»)
*/
public function addAction()
{
$order = new Order();
$form = $this->createForm(new OrderFormType(), $order);
$form->handleRequest($this->request);
if ($form->isSubmitted()&& $form->isValid()){
/** @var OrderStatus $newstatus**/
$newstatus = $this->getRepository('OrderStatus')->findOneBy(array('id'=>1));
$order->setStatus($newstatus);
foreach ($order->getSpecs()as $spec){
$spec->getOrders()->add($order);
}
$this->manager->persist($order);
$this->manager->flush();
$this->addNotice('success',
'orders.html.twig',
array('notice' =>'order_added', 'caption' => $order->getId())
);
return $this->redirectToRoute('site_orders_edit',array('order' => $order->getId(), 'step' => 1));
}
$this->view['order'] = null;
$this->forms['order'] = $form->createView();
$this->navigation = array('active' =>'orders');
return $this->render('AppBundle:Orders:order1.html.twig');
}
/**
* @param Order $order
* @return RedirectResponse|Response
* @Config\Route(«/orders/{order}/edit/{step}», name = «site_orders_edit»)
* @Config\ParamConverter(«order», options = {«mapping»: {«order»: «id»}})
*/
public function editAction(Order $order, $step)
{
if ($step > 4){
$step = 4;
}
switch ($step){
//общиеданные
case 1:
$form = $this->createForm(new OrderFormType(), $order);
$specs=array();
foreach ($order->getSpecs()as $spec){
array_push($specs, $spec);
}
$form2 = $this->createForm(new OrderEndFormType());
if ($this->request->isMethod('POST')){
$form->handleRequest($this->request);
if ($form->isSubmitted()&& $form->isValid()){
// проверяем был ли добавлен новый специалист и если был - отправляем ему уведомление
foreach ($order->getSpecs()as $spec){
if (!(in_array($spec,$specs ))){
$this->addNotification($spec,»Вамназначензаказ №».$order->getId().». <a href='«.$this->generateUrl('site_orders_edit', array('order'=>$order->getId(), 'step'=>1)).»'>Подробнее</a>« );
$spec->getOrders()->add($order);
}
}
$specsnew=array();
foreach ($order->getSpecs()as $spec){
array_push($specsnew, $spec);
}
//проверяем, был ли удален пользователь с заказа, если был - отправляем ему уведомление
foreach ($specs as $spec){
if (!(in_array($spec,$specsnew ))){
$this->addNotification($spec,» С Вас было снято назначение на заказ №».$order->getId().». <a href='«.$this->generateUrl('site_orders_edit', array('order'=>$order->getId(), 'step'=>1)).»'>Подробнее</a>« );
$spec->getOrders()->removeElement($order);
}
}
$this->manager->persist($order);
$this->manager->flush();
$this->addNotice('success',
'orders.html.twig',
array('notice' =>'order_changed', 'caption' => $order->getId())
);
return $this->redirectToRoute(
'site_orders_edit',
array('order' => $order->getId(), 'step' => 1)
);
}
$form2->handleRequest($this->request);
if ($form2->isSubmitted()&& $form2->isValid()){
//ставимдату
$order->setFactdate($form2->get('factdate')->getData());
// ставим статус
/** @var OrderStatus $newstatus**/
$newstatus = $this->getRepository('OrderStatus')->findOneBy(array('id'=>7));
$order->setStatus($newstatus);
// ищем выбранного поставщика
/** @var OrderProvider $orderprovider */
$orderprovider=$this->getRepository('OrderProvider')->createQueryBuilder('op')
->where('op.order = :order')
->andWhere('op.selected = true')
->setParameters(array('order'=>$order))->getQuery()->getOneOrNullResult();
if ($orderprovider){
//добавляем коммент
$comment= new OrderProviderComment();
$comment->setUser($this->getUser());
$comment->setOrderprovider($orderprovider);
$comment->setDescription($form2->get('comment')->getData());
$this->manager->persist($comment);
$this->manager->flush();
//обновляем рейтинг
$orderprovider->setBall($form2->get('ball')->getData());
$this->manager->persist($orderprovider);
$newrate=$this->getRepository('OrderProvider')->createQueryBuilder('op')
->select('AVG (op.ball)')
->where('op.provider = :provider')
->andWhere('op.selected = true')
->setParameters(array('provider'=>$orderprovider->getProvider()))
->getQuery()->getSingleScalarResult();
$provider= $orderprovider->getProvider();
$provider->setRate($newrate);
$this->manager->persist($provider);
}
$this->manager->persist($order);
$this->manager->flush();
$this->addNotice('success',
'orders.html.twig',
array('notice' =>'order_ended', 'caption' => $order->getId())
);
//отправляем уведомление админу
/** @var user $adminuser**/
$adminuser = $this->getRepository('User')->findOneBy(array('username'=>'admin'));
$this->addNotification($adminuser,»Пользователь «.$this->getUser()->getUserfio().» завершилзаказ №».$order->getId().». <a href='«.$this->generateUrl('site_orders_edit', array('order'=>$order->getId(), 'step'=>1)).»'>Подробнее</a>« );
return $this->redirectToRoute('site_orders_index');
}
}
$this->view['order'] = $order;
$this->forms['order'] = $form->createView();
$this->forms['endorder'] = $form2->createView();
$this->navigation = array('active' =>'orders');
return $this->render('AppBundle:Orders:order1.html.twig');
break;
//список товаров
case 2:
$form = $this->createForm(new OrderProductFormType());
$products=$this->getRepository('OrderProduct')->createQueryBuilder('op')
->leftJoin('op.product','p')
->where('p.deleted <> 1')
->andWhere('op.order = :order')
->setParameters(array('order'=>$order))
->orderBy('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()){
$orderproduct = $form->getData();
$orderproduct->setOrder($order);
$this->manager->persist($orderproduct);
$this->manager->flush();
return $this->redirectToRoute(
'site_orders_edit',
array('order' => $order->getId(), 'step' => 2)
);
}
}
$this->view['order'] = $order;
$this->view['products'] = $products;
$this->forms['orderproduct'] = $form->createView();
$this->navigation = array('active' =>'orders');
return $this->render('AppBundle:Orders:order2.html.twig');
break;
//список поставщиков
case 3:
$orderproviders=$this->getRepository('OrderProvider')->createQueryBuilder('op')
->leftJoin('op.provider','pr')
->where('op.order = :order')
->orderBy('op.selected', 'DESC')
->addOrderBy('op.active', 'DESC')
->addOrderBy('pr.rate', 'DESC')
->setParameters(array('order'=>$order))
->getQuery()->getResult();
$this->view['order'] = $order;
$this->view['orderproviders'] = $orderproviders;
$this->navigation = array('active' =>'orders');
return $this->render('AppBundle:Orders:order3.html.twig');
break;
//комментарии
case 4:
$ordercomments=$this->getRepository('OrderComment')->createQueryBuilder('oc')
->where('oc.order = :order')
->orderBy('oc.id')
->setParameters(array('order'=>$order))
->getQuery()->getResult();
$ordercomment=new OrderComment();
$form=$this->createForm(new OrderCommentFormType(),$ordercomment );
$form->handleRequest($this->request);
if ($form->isSubmitted()&& $form->isValid()){
$ordercomment->setOrder($order);
$ordercomment->setUser($this->getUser());
$this->manager->persist($ordercomment);
$this->manager->flush();
return $this->redirectToRoute(
'site_orders_edit',
array('order' => $order->getId(), 'step' => 4)
);
}
$this->view['order'] = $order;
$this->view['ordercomments'] = $ordercomments;
$this->forms['ordercomment']=$form->createView();
$this->navigation = array('active' =>'orders');
return $this->render('AppBundle:Orders:order4.html.twig');
break;
}
return $this->redirect('site_orders_index');
}
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 Order $order
* @return Response
* @Config\Route(«/orders/{order}/remove», name = «site_orders_remove»)
* @Config\ParamConverter(«order», options = {«mapping»: {«order»: «id»}})
*/
public function removeAction(Order $order)
{
$order->setDeleted(true);
$this->manager->persist($order);
$this->manager->flush();
return $this->redirectToRoute('site_orders_index');
}
//добавлениепоставщиковкзаказу
/**
* @param Order $order
* @return Response
* @Config\Route(«/orders/{order}/providersadd», name = «site_orders_providers_add»)
* @Config\ParamConverter(«order», options = {«mapping»: {«order»: «id»}})
*/
public function providersaddAction(Order $order)
{
//Формируеммассивпоставшиковснужнымитоварами
$products=$this->getRepository('Product')->createQueryBuilder('p')
->innerJoin('p.orderproducts','op')
->where('op.order = :order')
->setParameters(array('order'=>$order))
->getQuery()
->getResult();
$providersp=$this->getRepository('Provider')->createQueryBuilder('p')
->leftJoin('p.providerproducts','pp')
->where('pp.product IN (:products)')
->setParameters(array('products'=>$products))
->getQuery()
->getResult();
// Формируем поставщиков с нужными категориями товаров
$categories=$this->getRepository('ProductCategory')->createQueryBuilder('pc')
->innerJoin('pc.products', 'p')
->innerJoin('p.orderproducts','op')
->where('op.order = :order')
->setParameters(array('order'=>$order))
->getQuery()
->getResult();
$providersc=$this->getRepository('Provider')->createQueryBuilder('p')
->leftJoin('p.providerproducts','pp')
->leftJoin('pp.product', 'pr')
->where('pr.category IN (:categories)')
->setParameters(array('categories'=>$categories))
->getQuery()
->getResult();
//склеиваем массивы
$providers=array_merge($providersp,$providersc);
// убирем повторения
$providers=array_unique($providers, SORT_REGULAR );
$countpr=0;
$countc=0;
// в цикле добавляем поставщиков к заказам
/** @var User $usersystem**/
$usersystem = $this->getRepository('User')->findOneBy(array('username'=>'system'));
foreach ($providers as $provider){
$orderProvider=new OrderProvider();
$orderProvider->setProvider($provider);
$orderProvider->setOrder($order);
//идобавляемккаждомукомментарий
$orderProviderComment = new OrderProviderComment();
if ( in_array($provider,$providersp)){
$orderProviderComment->setDescription('Совпадениепотоварам');
$countpr++;
}
else {
$orderProviderComment->setDescription('Совпадениепокатегориям');
$countc++;
}
$orderProviderComment->setOrderprovider($orderProvider);
$orderProviderComment->setUser($usersystem);
$this->manager->persist($orderProvider);
$this->manager->persist($orderProviderComment);
$this->manager->flush();
}
// Добавляем коммент о сформированном списке поставщиков
$ordercomment = new OrderComment();
$ordercomment->setUser($usersystem);
$ordercomment->setOrder($order);
$ordercomment->setDescription ('Автоматически сформирован список потенциальных поставщиков. Всего: '.count($providers).'. Совпадений по товарам:'.$countpr.'. Совпадений по категориям: '.$countc);
$this->manager->persist($ordercomment);
$this->manager->flush();
return $this->redirectToRoute(
'site_orders_edit',
array('order' => $order->getId(), 'step' => 3)
);
}
/**
* @param Order $order
* @return Response
* @Config\Route(«/orders/{order}/changestatus/{status}», name = «site_orders_changestatus»)
* @Config\ParamConverter(«order», options = {«mapping»: {«order»: «id»}})
*/
public function changestatusAction(Order $order, $status)
{
$oldstatus=$order->getStatus()->getId();
/** @var OrderStatus $newstatus**/
$newstatus = $this->getRepository('OrderStatus')->findOneBy(array('id'=>$status));
$order->setStatus($newstatus);
//отправляемуведомлениепользователю
$descriptiontext='';
$notifusers=$order->getSpecs();
switch ($status){
case 2:
$descriptiontext=«Вамбылназначенновыйзаказ № «.$order->getId().». Незабудьтеподтвердитьпринятиевработу. <a href='«.$this->generateUrl('site_orders_edit', array('order'=>$order->getId(), 'step'=>1)).»'>Подробнее</a> «;
break;
case 3:
//если перед этим был статус «Ждет подтверждения»
if ($oldstatus==4){
$descriptiontext=«Заказ № «.$order->getId().» был вернут в работу. <a href='«.$this->generateUrl('site_orders_edit', array('order'=>$order->getId(), 'step'=>1)).»'>Подробнее</a> «;
//отменяем выбор поставщика
foreach ($order->getOrderproviders()as $orderprovider){
$orderprovider->setSelected(false);
$this->manager->persist($orderprovider);
$this->manager->flush();
}
}
//иначе увеомление админу
else {
$descriptiontext=«Пользователь «.$this->getUser()->getUserfio().» принялзаказ № «.$order->getId().» вработу. <a href='«.$this->generateUrl('site_orders_edit', array('order'=>$order->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=«Выборпоставщикавзаказе №».$order->getId().» былутвержден. <a href='«.$this->generateUrl('site_orders_edit', array('order'=>$order->getId(), 'step'=>1)).»'>Подробнее</a>«;
break;
case 6: $descriptiontext=«Заказ №».$order->getId().» былотменен. <a href='«.$this->generateUrl('site_orders_edit', array('order'=>$order->getId(), 'step'=>1)).»'>Подробнее</a>«;
break;
}
foreach ( $notifusers as $notifuser){
$this->addNotification($notifuser,$descriptiontext);
}
$this->manager->persist($order);
$this->manager->flush();
$this->addNotice('success',
'orders.html.twig',
array('notice' =>'order_changestatus', 'caption' => $order->getId())
);
return $this->redirectToRoute('site_orders_edit', array('order' => $order->getId(), 'step' => 1));
}
/**
* @param OrderProduct $orderproduct
* @param Order $order
* @return Response
* @Config\Route(«/orders/{order}/orderproducts/{orderproduct}/remove», name = «site_orderproducts_remove»)
* @Config\ParamConverter(«orderproduct», options = {«mapping»: {«orderproduct»: «id»}})
* @Config\ParamConverter(«order», options = {«mapping»: {«order»: «id»}})
*/
public function removeproductAction(OrderProduct $orderproduct, Order $order)
{
$this->manager->remove($orderproduct);
$this->manager->flush();
return $this->redirectToRoute('site_orders_edit', array('order'=>$order->getId(), 'step'=>2));
}
/**
* @param OrderProvider $orderprovider
* @param Order $order
* @return Response
* @Config\Route(«/orders/{order}/orderproviders/{orderprovider}/edit», name = «site_orderprovider_edit»)
* @Config\ParamConverter(«orderprovider», options = {«mapping»: {«orderprovider»: «id»}})
* @Config\ParamConverter(«order», options = {«mapping»: {«order»: «id»}})
*/
public function orderproviderAction(OrderProvider $orderprovider, Order $order)
{
//Инфа по продуктам
//в цикле перебираем продукты
$products=array();
$orderproducts=$this->getRepository('OrderProduct')->createQueryBuilder('op')
->leftJoin('op.product', 'p')
->where('op.order = :order')
->andWhere('p.deleted = false')
->setParameters(array('order'=>$order))
->getQuery()->getResult();
foreach ($orderproducts as $orderproduct){
//собираем в массив данные по каждому
$product=array();
$product['product']=$orderproduct->getProduct();
//запрашиваем цену, предоплату и срок поступления
/** @var ProviderProduct $providerproduct**/
$providerproduct=$this->getRepository('ProviderProduct')->createQueryBuilder('pp')
->where('pp.product = :product')
->andWhere('pp.provider = :provider')
->setParameters(array('product'=>$orderproduct->getProduct(), 'provider'=>$orderprovider->getProvider()))
->getQuery()->getOneOrNullResult();
//еслиесть - пихаемвмассив
if ($providerproduct){
$product['price']=$providerproduct->getPrice();
$product['prepay']=$providerproduct->getPrepay();
$product['delivarytime']=$providerproduct->getDelivarytime();
}
else {
$product['price']=null;
$product['prepay']=null;
$product['delivarytime']=null;
}
//запрашиваем сколько заказов было выполнено поставщиком с таким товаром
$countorders = $this->getRepository('Order')->createQueryBuilder('o')
->leftJoin('o.orderproviders','op')
->leftJoin('o.orderproducts', 'opr')
->where('op.provider = :provider')
->andWhere('opr.product = :product')
->andWhere('op.selected =1')
->setParameters(array('provider'=>$orderprovider->getProvider(), 'product'=>$orderproduct->getProduct()))
->getQuery()->getArrayResult();
$countorders=count($countorders);
//еслиесть - пихаемвмассив
$product['countorders']=$countorders;
array_push($products, $product);
}
//Комментарии
$orderprovidercomments = $this->getRepository('OrderProviderComment')->createQueryBuilder('opc')
->where('opc.orderprovider = :orderprovider')
->orderBy('opc.id')
->setParameters(array('orderprovider'=>$orderprovider))
->getQuery()->getResult();
$orderprovidercomment=new OrderProviderComment();
$form=$this->createForm(new OrderProviderCommentFormType(),$orderprovidercomment );
$form->handleRequest($this->request);
if ($form->isSubmitted()&& $form->isValid()){
$orderprovidercomment->setOrderprovider($orderprovider);
$orderprovidercomment->setUser($this->getUser());
$this->manager->persist($orderprovidercomment);
$this->manager->flush();
return $this->redirectToRoute(
'site_orderprovider_edit',
array('order' => $order->getId(), 'orderprovider' => $orderprovider->getId())
);
}
$this->view['order'] = $order;
$this->view['orderprovider'] = $orderprovider;
$this->view['products']=$products;
$this->view['orderprovidercomments'] = $orderprovidercomments;
$this->forms['orderprovidercomment']=$form->createView();
$this->navigation = array('active' =>'orders');
return $this->render('AppBundle:Orders:orderprovider.html.twig');
}
//скрытие заказа
/**
* @param OrderProvider $orderprovider
* @param Order $order
* @return Response
* @Config\Route(«/orders/{order}/orderproviders/{orderprovider}/disabled», name = «site_orderprovider_disabled»)
* @Config\ParamConverter(«orderprovider», options = {«mapping»: {«orderprovider»: «id»}})
* @Config\ParamConverter(«order», options = {«mapping»: {«order»: «id»}})
*/
public function orderproviderdisapledAction(OrderProvider $orderprovider, Order $order)
{
$orderprovider->setActive(false);
$this->manager->persist($orderprovider);
$this->manager->flush();
return $this->redirectToRoute(
'site_orderprovider_edit',
array('order' => $order->getId(), 'orderprovider' => $orderprovider->getId())
);
}
//Открытие заказа
/**
* @param OrderProvider $orderprovider
* @param Order $order
* @return Response
* @Config\Route(«/orders/{order}/orderproviders/{orderprovider}/enabled», name = «site_orderprovider_enabled»)
* @Config\ParamConverter(«orderprovider», options = {«mapping»: {«orderprovider»: «id»}})
* @Config\ParamConverter(«order», options = {«mapping»: {«order»: «id»}})
*/
public function orderproviderenapledAction(OrderProvider $orderprovider, Order $order)
{
$orderprovider->setActive(true);
$this->manager->persist($orderprovider);
$this->manager->flush();
return $this->redirectToRoute(
'site_orderprovider_edit',
array('order' => $order->getId(), 'orderprovider' => $orderprovider->getId())
);
}
//выбор заказа
/**
* @param OrderProvider $orderprovider
* @param Order $order
* @return Response
* @Config\Route(«/orders/{order}/orderproviders/{orderprovider}/selected», name = «site_orderprovider_selected»)
* @Config\ParamConverter(«orderprovider», options = {«mapping»: {«orderprovider»: «id»}})
* @Config\ParamConverter(«order», options = {«mapping»: {«order»: «id»}})
*/
public function orderproviderselectedAction(OrderProvider $orderprovider, Order $order)
{
$orderprovider->setSelected(true);
/** @var OrderStatus $newstatus**/
$newstatus = $this->getRepository('OrderStatus')->findOneBy(array('id'=>4));
$order->setStatus($newstatus);
/** @var user $adminuser**/
$adminuser = $this->getRepository('User')->findOneBy(array('username'=>'admin'));
//отправляем уведомление пользователю
$notificationtext=«Пользователь».$this->getUser()->getUserfio().» выбрал поставщика для заказа № «.$order->getId().». Необходимо подтвердить результат. <a href='«.$this->generateUrl('site_orders_edit', array('order'=>$order->getId(), 'step'=>3)).»'>Подробнее</a> «;
$this->addNotification($adminuser, $notificationtext);
$this->manager->persist($order);
$this->manager->flush();
return $this->redirectToRoute(
'site_orders_edit',
array('order' => $order->getId(), 'step' => 3)
);
}
public function addNotification (User $user, $description){
$notification = new Notification();
$notification->setUser($user);
$notification->setDescription($description);
$this->manager->persist($notification);
$this->manager->flush();
}
}
Приложение Б
Графическая часть дипломного проекта.
В графическую часть дипломного проекта входят:
1. Функциональная модель IDEF0 (рисунок Г.1);
2. Диаграмма потоков данных (рисунок Г.2);
3. Инфологическая схема данных (рисунок Г.3);
4. ER-диаграмма базы данных (Рисунок Г.4);
5. Алгоритм процедуры авторизации (рисунок Г.5);
6. Сравнение программных аналогов (рисунок Г.6);
7. Граф диалога (рисунок Г.7);
8. Графический интерфейс системы (рисунок Г.8).
Размещено на Allbest.ru
...Подобные документы
Разработка программы автоматизации подбора запчастей для ремонта автомобилей. Структурные единицы сообщений. Концептуальная модель системы. Алгоритм работы автоматизированной системы. Физическая модель данных. Описание пользовательского интерфейса.
дипломная работа [2,1 M], добавлен 20.06.2013Изучение теории управления образовательными учреждениями и ВУЗами. Проектирование, реализация и внедрение автоматизированной информационной системы для автоматизации кафедры ВУЗа. Описание разработанной системы, расчет экономической эффективности проекта.
дипломная работа [4,5 M], добавлен 09.03.2010Выбор и обоснование критериев эффективности и качества разрабатываемой программы. Актуальность автоматизации процесса обучения. Разработка автоматизированной технологии обработки информации. Определение формы представления входных и выходных данных.
курсовая работа [739,6 K], добавлен 17.01.2015Понятие автоматизированной системы (АС). Обзор литературы, введение в базы данных. Назначение разработки, составные части программы. Программная и эксплуатационная документация, технико-экономическое обоснование проекта, характеристика программы.
дипломная работа [759,6 K], добавлен 27.04.2009Анализ существующих разработок и выбор стратегии автоматизации делопроизводства взаимоотношении поставщиков лекарственных препаратов с аптекой. Разработка проекта базы данных аптеки "Ригла". Обоснование экономической эффективности разработки базы данных.
дипломная работа [3,0 M], добавлен 19.09.2013Проектирование автоматизированной системы обслуживания клиентов банка через Интернет, функциональные требования к ней. Выбор системы управления базами данных. Описание интерфейса программы, ее тестирование. Расчёт экономической эффективности проекта.
дипломная работа [7,9 M], добавлен 24.03.2010- Разработка автоматизированной системы оценки кредитоспособности физических лиц (АС "CreditAnalysis")
Проектирование автоматизированной информационной системы по оценке кредитоспособности клиента Банка для принятия решения по выдаче кредита. Разработка интерфейса и алгоритма работы программы. Составление сметы затрат на создание программного изделия.
дипломная работа [2,3 M], добавлен 26.07.2014 Общая характеристика Рассказовского отделения Сбербанка России №3884. Обоснование проектных решений по автоматизированной информационной системе, сравнение и выбор средств. Обоснование эффективности применения системы Программы 1С: Предприятие 7.7.
курсовая работа [67,6 K], добавлен 07.07.2013Обзор медицинских информационных систем. Анализ и моделирование автоматизированной системы "Регистратура". Требования к составу и параметрам вычислительной системы. Обоснование выбора системы управления базами данных. Разработка инструкции пользователя.
дипломная работа [1,2 M], добавлен 14.10.2012Сравнение клиент-серверной и файл-серверной архитектуры. Особенности разработки проекта автоматизированной информационной системы "Ведение протокола нерешенных задач по материалам для ЗАО "Авиастар-СП". Расчет экономической эффективности от внедрения АИС.
курсовая работа [1,4 M], добавлен 23.06.2011Разработка автоматизированной системы мониторинга производственной деятельности предприятия, необходимой для принятия управленческих решений, обеспечивающих стабильную работу завода бытовой техники ЗАО "АТЛАНТ". Описание классов системы, тестирование.
курсовая работа [3,6 M], добавлен 19.06.2014Обзор средств автоматизации торговли. Обзор состояния Интернет-торговли и роли в них аукционов. Описание процесса проектирования автоматизированной системы. Расчет экономической эффективности от внедрения программного продукта. Охрана труда работников.
дипломная работа [569,0 K], добавлен 09.09.2008Создание информационной системы для фирмы "Удача", которая является посредником при перепродаже недвижимости. Обоснование состава вычислительной техники и программного обеспечения для функционирования данной автоматизированной информационной системы.
курсовая работа [1,8 M], добавлен 17.02.2014Принципы автоматизации делопроизводства. Основание для создания автоматизированной системы. Преимущества использования архитектуры "клиент-сервер". Обоснование методики расчета экономической эффективности. Характеристика вычислительной сети ООО "Элси".
дипломная работа [4,4 M], добавлен 06.03.2010Методы и этапы создания автоматизированной обучающей системы по дисциплине "Программирование" для студентов ВУЗов. Описание и сравнение программ-аналогов. Выбор инструментальных средств и языка разработки. Проектирование интерфейса обучающей программы.
курсовая работа [4,4 M], добавлен 26.11.2010Обоснование необходимости совершенствования информационной системы (ИС) ООО "Мехсервис". Анализ системы учета деятельности авторемонтного предприятия. Разработка концепции построения автоматизированной ИС. Описание продукта информационной технологии.
дипломная работа [2,7 M], добавлен 22.05.2012Разработка информационной системы для автоматизации процесса учета поставок и продаж запчастей в магазине, создание программного кода. Моделирование основных бизнес-процессов. Обоснование экономической эффективности проекта и расчет ее показателей.
дипломная работа [2,4 M], добавлен 17.08.2015Анализ имеющихся систем для управления учебным заведением. Запросы и потребности автоматизации управления учебным процессом в филиале КГПУ им. В.П.Астафьева. Оценка эффективности внедрения новой адаптированной автоматизированной системы управления.
дипломная работа [1,1 M], добавлен 19.06.2013Исследование системы функционирования зоомагазина "Дракоша" и схематическое описание бизнес-процессов предприятия. Генерация кода и разработка автоматизированной информационной системы магазина на языке программирования С+. Расчет диаграмм автоматизации.
курсовая работа [841,8 K], добавлен 07.08.2013Обоснование выбора среды программирования и технических средств. Определение требований к компонентам системы. Описания объекта автоматизации. Написание инструкции по эксплуатации для пользователя. Разработка программных компонентов. Выбор методики СУБД.
курсовая работа [1,3 M], добавлен 27.10.2012