Экономическая характеристика разрабатываемой подсистемы
Внедрение разрабатываемой подсистемы позволит менеджерам по учету движения товаров в более короткие сроки осуществлять обработку документов для отгрузки и резервирования товаров; менеджеры по учету движения товаров смогут более рационально использовать свое рабочее время.
Оценка отрицательных денежных потоков
Инвестиции в проект будут складываться только из затрат на разработку прикладного решения. В состав этих затрат входят затраты на выполнение следующих задач:
· исследование предметной области;
· выбор и обоснование проектных решений;
· проектирование;
· разработка;
· тестирование и отладка;
· опытное тестирование.
Стоимость разработки проекта будет складываться из общей стоимости работы ресурсов.
Для ресурсов назначим следующую стоимость работы:
· дипломник - 0 руб./час;
· программист – 10000 руб;
· представитель заказчика - 0 руб./час.
Выплата программисту осуществляется единовременно по выполнению разработки подсистемы «Перемещение товаров»
Оценка положительных денежных потоков
Положительные денежные потоки предполагается получить за счет уменьшения количества перерабатываемых часов у менеджеров по учету движения товаров. В сезонный период (апрель – август) значительно увеличивается общее количество обрабатываемых заказов. В неделю приходиться порядка 100 отгрузок на одного менеджера (по статистическим данным о деятельности сервисной службы ООО «Полиграф Принт» за предыдущие периоды). Время выполнение обработки 1 заказа без внедрения разрабатываемой подсистемы, для подготовки к отгрузке, составляет в среднем 30 минут. Соответственно в сезонный период наступает необходимость увеличения количества рабочих часов (в среднем на 10), за счет переработок. Рассчитаем выплату за перерабатываемые часы в неделю, приходящиеся на одного менеджера. При учете того, что штат менеджеров по учету движения товаров 11 человек, необходимость в постоянной переработке возникает у 5 сотрудников. Итоговые затраты компании ООО «Полиграф Принт» без внедрения разрабатываемой подсистемы учитываются из расчета перерабатываемых общих часов 5 сотрудников. Ниже приводимые расчёты основаны на данных бухгалтерского отдела ООО «Полиграф Принт».
10000 – заработная плата менеджера в месяц
56,82 - заработная плата менеджера в час
(100*30) /60 = 50 – часов, затрачивает менеджер на обработку документов в неделю
(50 – (8*5))*56,82 = 568,2 – рублей, в среднем оплата за перерабатываемые часы в неделю
568,2*4*5 = 11364 – рублей, в среднем оплата за перерабатываемые часы за сезонный период (апрель – август)
5*11364 = 56820 – рублей, в среднем составляют затраты на оплату перерабатываемых часов менеджерам отдела за сезонный период (апрель – август)
Итого затраты на год составляют 56820 рублей
Поскольку внедряемая подсистема позволит сократить время на обработку документов отгрузки товаров, то необходимость в переработке часов сводиться к минимуму.
Расчет показателей
Произведем расчет показателей экономической эффективности на 5 лет.
Ставку рефинансирования примем равной 12,5 % (по данным Центробанка на 05.05.2015)
Темп инфляции примем равным 16,5% в год.
Рассчитаем чистый приведенный доход NPV
.
Таблица 1 Расчет NPV
Результаты расчета показывают, что проект имеет положительную величину NPV. Это говорит о том, что внедрение данного проекта принесет прибыль.
Определим срок окупаемости инвестиций PP:
PP = 10000/56820 = 0,176
Таким образом, проект окупит себя за 0,176 года
Определим индекс доходности инвестиций PI:
PI = 192311,49/-(-10000) = 19,23
Т.о. каждый вложенный в проект рубль окупит себя и принесет еще 19,23 руб.
Выводы по главе 4
Проведенный экономический анализ показал, что:
· чистый приведенный доход (NPV) за 5 лет использования системы составляет 192311,49 руб.;
· срок окупаемости инвестиций в проект (PP) составляет 0,176 года;
· каждый вложенный в проект рубль окупит себя и принесет дополнительно 19,23 руб. (PI);
Учитывая вышеприведенный показатели, можно сделать вывод, что проект экономически эффективен и принесет прибыль после своего внедрения.
Заключение
Разработанная система позволит повысить эффективность процесса создания документов отгрузки товаров за счет использования информационных технологий.
В ходе выполнения дипломной работы была создана подсистема «Перемещение товаров», автоматизирующая основные действия процесса:
· построение отчёта «Анализ доступности товаров» по каждому наименованию номенклатуры;
· определение, на каком складе числиться нужный товар, его количество и резерв контрагента;
· формирование списков товаров, по каждому складу;
· создание документов «Перемещения товаров» для каждого склада.
Проведенный экономический анализ показал, что проект эффективен с экономической точки зрения и принесет после своего внедрения прибыль.
Созданная программа была успешно внедрена в информационную систему ООО «Полиграф Принт», а также успешно протестирована на работоспособность сотрудниками сервисной службы.
Список литературы
1. Сайт компании - Режим доступа: http://www.academy-group.ru/
2. 1С: Предприятие 8.2. Универсальный самоучитель - Режим доступа: http://www.assessor.ru/forum/index.php?t=1740
3. http://www.znay.ru/risk/02-10.shtml
4. Система моделирования бизнес процессов ARIS - Режим доступа: http://bourabai.ru/cm/aris.htm
5. Бизнес – требования - Режим доступа: http://www.dpgrup.ru/software-requirements.htm
6. С:Предприятие 8.1. Конфигурирование и администрирование. М: Фирма «1С», 2007.
7. 1С:Предприятие 8.1. Руководство по установке и запуску. М.: Фирма «1С», 2007. - 96 с.
8. Вендров А.М. CASE-технологии. Современные методы и средства проектирования информационных систем. М., МГУ, 1998.
9. Радченко М.Г. 1С:Предприятие 8.0. Практическое пособие разработчика. Примеры и типовые приемы, 2-е стереотипное издание. М.: ООО «1С- Паблишинг», 2006. - 656 с.: ил.
10. Беляев Д.А. Информационные технологии управления: Опорный конспект лекций. Сыктывкар: Издательство Сыктывкарского университета, 2006. 50 с.
11. Паулк Марк, Модель зрелости процессов разработки программного обеспечения/ Паулк Марк, Куртис Билл, Хриссис Мэри Бет, Вебер Чарльз В, Гарсия Сьюзен М, Буш Мерилин, 2002. -50с
12. 1997-99 Кирилл Воронов, КГ "Воронов и Максимов", Показатели оценки роста инвестиционного проекта, Режим доступа: http://www.aup.ru/articles/investment/5.htm
Приложение А
Рис.17 Организационная структура Общества с Ограниченной Ответственностью «Полиграф Принт»
Приложение Б
Процедура элемента командной строки «Проверка на остатки»:
Процедура КоманднаяПанельТоварыПроверкаНаОстатки(Кнопка)
// Вставить содержимое обработчика.
Если ЭтоНовый() = Истина или Модифицированность()=Истина Тогда
Сообщить("Необходимо записать документ!");
Возврат;
КонецЕсли;
Если Справочники.ПринадлежностьРезервов.НайтиПоРеквизиту("ПользовательРезерва",Контрагент)<> Справочники.ПринадлежностьРезервов.ПустаяСсылка() Тогда
ТекущийКонтрагент = Справочники.ПринадлежностьРезервов.НайтиПоРеквизиту("ПользовательРезерва",Контрагент).ВладелецРезерва;
Иначе
ТекущийКонтрагент = Контрагент;
КонецЕсли;
ТаблицаДанных = Товары.Выгрузить();
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("ПроверкаНаОстатки");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.ДатаДок = ДатаПроведения;
ОбластьПозиция = Макет.ПолучитьОбласть("ПозицияЗаголовок");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьЧерта = Макет.ПолучитьОбласть("Черта");
ОбластьПробел = Макет.ПолучитьОбласть("Пробел");
ТабДок.Вывести(ОбластьШапка);
Если Контрагент <> ТекущийКонтрагент Тогда
ОбластьДругой = Макет.ПолучитьОбласть("ДругойКонтрагент");
ОбластьДругой.Параметры.ТекущийКонтрагент = ТекущийКонтрагент;
ТабДок.Вывести(ОбластьДругой);
КонецЕсли;
Показывать = Ложь;
Остатки = Хватает(ТаблицаДанных.ВыгрузитьКолонку("Номенклатура"), ТекущийКонтрагент);
УДругих = ЧужиеРезервы(ТаблицаДанных.ВыгрузитьКолонку("Номенклатура"), ТекущийКонтрагент);
ТолькоСвободныеОстатки = Ложь;
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос("Проверять остатки с учетом собственных резервов?", Режим, 0);
Если Ответ = КодВозвратаДиалога.Нет Тогда
ТолькоСвободныеОстатки = Истина;
КонецЕсли;
Для каждого СтрокаДанных из ТаблицаДанных Цикл
Отбор = Новый Структура;
Отбор.Вставить("Номенклатура", СтрокаДанных.Номенклатура);
Отбор.Вставить("ХарактеристикаНоменклатуры", СтрокаДанных.ХарактеристикаНоменклатуры);
МассивСтрок = Остатки.НайтиСтроки(Отбор);
Если ТолькоСвободныеОстатки = Истина Тогда
СвойРезерв = 0;
Иначе Если МассивСтрок.Количество() <> 0 Тогда
СвойРезерв = МассивСтрок.Получить(0).РезервСвой;
Иначе
СвойРезерв = 0;
КонецЕсли;
Если МассивСтрок.Количество() = 0 или СвойРезерв + МассивСтрок.Получить(0).СвободныйОстаток < СтрокаДанных.Количество Тогда
Показывать = Истина;
//не хватает
//определяем сколько
Если МассивСтрок.Количество() = 0 Тогда
НеХватаетШтук = СтрокаДанных.Количество;
ВРезервеШтук = 0;
ВСвободеШтук = 0;
Иначе
НеХватаетШтук = СтрокаДанных.Количество-СвойРезерв-МассивСтрок.Получить(0).СвободныйОстаток;
ВРезервеШтук = МассивСтрок.Получить(0).РезервСвой;
ВСвободеШтук = МассивСтрок.Получить(0).СвободныйОстаток;
КонецЕсли;
ОбластьЗаголовок.Параметры.Сообщение = "Где можно взять:";
ОбластьПозиция.Параметры.Строка = "Строка " + Строка(СтрокаДанных.НомерСтроки);
ОбластьПозиция.Параметры.Номенклатура = Строка(СтрокаДанных.Номенклатура.Код)+" "+Строка(СтрокаДанных.Номенклатура);
ОбластьПозиция.Параметры.Характеристика = СтрокаДанных.ХарактеристикаНоменклатуры;
ОбластьПозиция.Параметры.Количество = "Необходимо (шт): " +Строка(СтрокаДанных.Количество)+" "+ ?(ВРезервеШтук = 0,"","Зарезервировано (шт): " + Строка(ВРезервеШтук)+", ") + ?(ВСвободеШтук = 0,"","В свободе(шт): " + Строка(ВСвободеШтук) +", ") + "Не хватает (шт): "+ Строка(НеХватаетШтук);
ТабДок.Вывести(ОбластьПозиция);
ТабДок.Вывести(ОбластьЗаголовок);
Отбор.Удалить("ХарактеристикаНоменклатуры");
ДругиеСтандарты = Остатки.НайтиСтроки(Отбор);
Если ДругиеСтандарты.Количество() = 0 или (ДругиеСтандарты.Количество() = 1 и ДругиеСтандарты.Получить(0).ХарактеристикаНоменклатуры = СтрокаДанных.ХарактеристикаНоменклатуры) Тогда
//вообще нет этой позиции
РезервыДругих = УДругих.НайтиСтроки(Отбор);
Если РезервыДругих.Количество() <> 0 Тогда
ОбластьДругиеКонтрагенты = Макет.ПолучитьОбласть("ДругиеШапка");
ТабДок.Вывести(ОбластьДругиеКонтрагенты);
ОбластьДругиеКонтрагентыСтрока = Макет.ПолучитьОбласть("ДругиеСтрока");
Для каждого ЭлементМассива из РезервыДругих Цикл
Если ЭлементМассива.КоличествоОстаток <> 0 Тогда
ОбластьДругиеКонтрагентыСтрока.Параметры.Стандарт = ЭлементМассива..
Приложение В
Процедура создания документов «Перемещение товаров» со складов хранения на склад «Ежедневный»:
Процедура КнопкаВыполнитьНажатие(Кнопка)
ТолькоРезерв = Ложь;
//либо реализация либо для счета уже создали резерв
Если ЭлементыФормы.ОсновныеДействияФормы.Кнопки.ПоместитьВРезерв.Доступность = Ложь и ТипЗнч(ДокументОснование) = ТипЗнч(Документы.СчетНаОплатуПокупателю.ПустаяСсылка()) Тогда
КонецОбработки = Ложь;
Для Каждого СтрокаДанных из Товары Цикл
СтрокаДанных.Обработан = Ложь;
КонецЦикла;
ИначеЕсли Не ПроверкаДанных()Тогда
Возврат;
КонецЕсли;
Если Справочники.ПринадлежностьРезервов.НайтиПоРеквизиту("ПользовательРезерва",ДокументОснование.Контрагент)<> Справочники.ПринадлежностьРезервов.ПустаяСсылка() Тогда
ТекущийКонтрагент = Справочники.ПринадлежностьРезервов.НайтиПоРеквизиту("ПользовательРезерва",ДокументОснование.Контрагент).ВладелецРезерва;
Иначе
ТекущийКонтрагент = ДокументОснование.Контрагент;
КонецЕсли;
ЗапросДата = Новый Запрос;
ЗапросДата.УстановитьПараметр("Контрагент", ТекущийКонтрагент);
ЗапросДата.Текст = "ВЫБРАТЬ
| МАКСИМУМ(ТоварыВРезервеНаСкладах.Период) КАК Период
|ИЗ
| РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах";
Попытка
ДатаРезерва = КонецДня(ЗапросДата.Выполнить().Выгрузить().Получить(0).Период);
Исключение
ДатаРезерва = КонецГода(ТекущаяДата());
КонецПопытки;
Если ДатаРезерва<ТекущаяДата() Тогда
ДатаРезерва = ТекущаяДата();
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаРезерва",КонецДня(ДатаРезерва));
Если ДокументОснование.Контрагент = Справочники.Контрагенты.НайтиПоКоду("000000015")Тогда //детский мир москва
Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоКоду("00191"));
Иначе
Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоКоду("00007"));
КонецЕсли;
Запрос.УстановитьПараметр("Сезон", ДокументОснование.Сезон);
Запрос.УстановитьПараметр("Контрагент", ТекущийКонтрагент);
Запрос.Текст = "ВЫБРАТЬ
| ЗаказыПокупателейОстатки.ЗаказПокупателя,
| ЗаказыПокупателейОстатки.ЗаказПокупателя.СкладГруппа КАК Склад,
| ЗаказыПокупателейОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ЗаказыПокупателей.Остатки(
| &ДатаРезерва,
| ЗаказПокупателя.Контрагент = &Контрагент
| И ЗаказПокупателя.СкладГруппа В ИЕРАРХИИ (&Склад)
| И Номенклатура = &Номенклатура
| И ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры
| И ЗаказПокупателя.Сезон = &Сезон) КАК ЗаказыПокупателейОстатки
|ГДЕ
| ЗаказыПокупателейОстатки.КоличествоОстаток > 0";
Для каждого СтрокаДанных из Товары Цикл
Если СтрокаДанных.Обработан = Ложь Тогда
Запрос.УстановитьПараметр("Номенклатура",СтрокаДанных.Номенклатура);
Запрос.УстановитьПараметр("ХарактеристикаНоменклатуры",СтрокаДанных.ХарактеристикаНоменклатуры);
РезультатЗаказ = Запрос.Выполнить().Выгрузить();
Результат = РезультатЗаказ.Скопировать();
Результат.Свернуть("Склад", "КоличествоОстаток");
Если СтрокаДанных.Перемещено < СтрокаДанных.Количество Тогда
БудемПеремещатьКоличество = СтрокаДанных.Количество - СтрокаДанных.Перемещено;
Иначе
СтрокаДанных.Обработан = Истина;
Продолжить;
КонецЕсли;
Если ОпределитьБазовуюЦену(ТекущаяДата(),СтрокаДанных) = 0 Тогда
Сообщить(Строка(СтрокаДанных.Код) +" "+Строка(СтрокаДанных.Номенклатура)+ " нет базовой цены!");
Продолжить;
ИначеЕсли Результат.Количество()=0 Тогда //в резерве нет или отрицательное
Если ИзСвободыВРезерв(СтрокаДанных, БудемПеремещатьКоличество, ТекущийКонтрагент) = Истина Тогда //удалось
Если ТипЗнч(ДокументОснование) = ТипЗнч(Документы.СчетНаОплатуПокупателю.ПустаяСсылка()) Тогда
ПричинаКорректировки = Справочники.ПризнакиСписанияРезервов.Продажа;
ВыполнитьПеремещение(Запрос.Выполнить().Выгрузить(), СтрокаДанных, БудемПеремещатьКоличество, ПричинаКорректировки);
КонецЕсли;
Если СтрокаДанных.Количество <= СтрокаДанных.Перемещено Тогда
СтрокаДанных.Обработан = Истина;
КонецЕсли;
Продолжить;
Иначе
Сообщить(Строка(СтрокаДанных.Код) +" "+Строка(СтрокаДанных.Номенклатура) + " в свободе не достаточно. Замените или удалите позицию");
КонецЕсли;
//в резерве сколько то..