Смекни!
smekni.com

Разработка экономического ядра модуля ERP системы (стр. 8 из 9)

Общее описание проекта

Данный проект представляет собой один из модулей ERP системы.В частности “Управление товарными и финансовыми потоками” . Предназначена для мелких фирм и индивидуальных предпринимателей. Будет также полезна все кто много и часто совершает операции покупки / продажи. Позволяет вести учет всего цикла перемещения товаров/денег в торговой операции и составлять отчет о проделанной работе. Для демонстрации возможностей программы реализована схема интернет-торговли на аукционе Ebay.

Реализация

При решение поставленной задачи использовалась среда Net Beans на базе языка программирования Java. Интерфейс пользователя создавался с применением технологии Swing. Графическое оформлении делалось с помощью редактора “Corel Draw”, документация с помощью текстового процессора MS Word и Macromedia Flash

Логическая схема

Требования

Для работы программы необходим, по возможности качественный монитор, c поддержкой разрешения 1024*768 и выше, компьютер c 256 Mb и более оперативной памяти и тактовой частотой процессора не менее 700Mhz. Операционная система c установленной виртуальной машиной Java

Экономическая схема торговой деятельности

Любая торговая экономическая деятельность, включает в себя несколько основных разделов:

· Сами операции

o Покупка

o Продажи

o Посредничество

o Смешанный вариант (к примеру Dropshipping)

· Субъекты которые непосредственно участвуют в этих операциях:

o Клиенты (любой клиент может выступать в роли посредника)

o Посредники (помогающие осуществить товарный или денежный расчет м/у клиентами)

- Товарное посредничество (Склады и почты)

· Прием

· Отправка

· Обмен

- Денежное посредничество (Банки, платежные системы итд)

· Прием

· Проплата

· Конвертация валют

· Обмен м/у различными платежными системами

Любая торговая экономическая деятельность при упрощении представляет собой оборот товаров и денег. А деньги есть эквивалент товара плюс посредники для обеспечения этого обмена. Но у каждой деятельности, есть также некоторые отраслевые особенности с определенными дополнительными параметрами, по которым она работает.

То есть любая экономическая деятельность будь то система управления финансами компьютерного клуба, агенства недвижимости или интернет торговли работает в пределах схемы приведенной выше (какие-то части есть , каких-то нет) в купе с отраслевыми.

Если программно реализовать вышеприведенную экономическую схему, то чтобы построить необходимую экономическую модель, нужно просто оставить необходимые модули из этой схемы плюс добавить отраслевые законы, по которым это будет все работать. Такая практика используется, когда пишут большие экономические проекты сходной направленности, после чего они разбиваются на более мелкие, с сохранением архитектуры программы. Измения мелких относительно основного проекта - несоизмеримы по времени разработки большого – что очень удобно. Поэтому в будущем когда заказчику нужна будет бухгалтерская система опреленной направленности ,к примеру работа агентства недвижимости, нет смысла делать автономную, статическую программу , и выделять под это весь проект. Удобней будет сделать один проект , который будет как конструктор- шаблон для других любых экономических проектов. В общем, любая программа построенная на этом “конструкторе”, позволит контролировать товарно-финансовые потоки и представит удобные инструменты для выполнения промежуточных .

Пример отраслевой реализации экономической схемы

Аукцион EBAY

К примеру программа для аукциона Ebay, может затрагивать все разделы схемы деятельности и может быть полезна как продавцам и покупателям для учета всех операций, так и для посредников . Главное, чтобы он серьезно и много работал в этой схеме торговли, чтобы ему был смысл отследить и автоматизировать свою деятельность относительно множества других объектов или операций. Каждый в зависимости от роли, в которой он участвует в обмене товаров и денег, будет наглядно представлять, что он делает относительно других и какой его результат.

Для построения программы для ebay, добавляем систему акционов (обычный, голландский итд) это идет как особенность операции продажи. Также можем добавить типы совершения продаж (Buy it now, immediate payment required , private auctions etc) и тд. Добавляем систему рейтингов для продавцов и покупателей(CRM/SRM),

Добавляем товарных посредников (почты). Добавляем статистику по закрытым аукционам (аналитика) и тд…

Добавили все законы и ограничения этой схемы , характерные для ebay - получили программу для работы на ebay.

Агенство недвижимости

Участники (клиенты или субъекты)

· Арендодатели (продавцы)

· Само агенство (посредник)

· Квартиросъемщик (покупатель)

Квартиросъемщик снимает квартиру через агентство, приводя к перемещению товаров и денег. В данном случае товаром выступает информация о сдаваемой квартире. Деньги от квартиросъемщика идут и к агентству и к арендодателю квартиры. Товар идет от арендодателя к квартиросъемщику. Опять существуют разные типы квартир с разными характеристиками и ценами. Существуют различные агентства и работающие на них агенты, а также различные категории людей, кто будет снимать эти хаты. Для каждого составляется своя база данных.

В общем, простые информационные услуги, где товар информация. Построили эту схему перемещения товаров (информации о сдаваемом жилье) и денег плюс база данных квартир и их характеристик. Программа будет удовлетворять интересам, как хозяев квартир, так и агентств и квартиросъемщиков. Каждый из них занимает определенную и однозначную позицию в экономической схеме (продавец, посредник, покупатель) и может быть определен в ней ,при помощи связей многие ко многим

После вводим законы и условия, по которым функционирует сегмент Недвижимость - > Аренда жилья: Накладываем ограничения на схему Недвижимость - > Аренда жилья: в рамках общей экономической схемы:

· Смешанный тип операции (Продажа через посредничество)

Определяем роли относительно субъектов экономических отношений и определяем перемещение товаров и денег м/у ними. Информация (товар) поступает от квартиросъемщиков (продавцов) и агентов (посредников) к агентству, после чего продается квартиросъемщику. В данном случае агент, работающий на агентство выступает в роли посредника м/у агентством и арендодателем. Агентство по отношению к квартиросъемщику также посредник.

· Законы проведения операции и их последовательность.

Вводим порядок проведения операции (очень упрощенно)

1. Подача заявки

2. Предложение вариантов квартир

3. Заключение предварительного договора с агентством

4. Выезд агента и просмотр хат

5. Заключение договора с хозяином квартиры

6. Оплата услуг агентства

7. Заключение договора в ЖЭС м/у хозяином хаты и квартиросъемщиком

· Определяем товар

Два вида товара, характерные только для данной отрасли

1. Оплата по факту заселения (договорился с хозяином хаты – заплатил деньги агентству. Эта услуга, как правило, дороже + выезд агента)

2. Предоставление просто информации о сдаваемых в текущий момент квартирах (дешевле, но нет гарантии, что квартира не сдана)

Таким образом, можно реализовать любую схему товарооборота, изменяя лишь отраслевые законы по которым она функционирует, и построить на базе разработанного ERP модуля программу для автоматизации этих целей.

Внешний вид программы


Исходный код

Файл MclientsPanel

public class MClientsPanel extends SVModPanel {

public JDBConnect DBConnect = new JDBConnect();

public JDBConnect.JTData dataGrid = new JDBConnect.JTData();

public ClientTab clTab;

public AuditTab auTab;

public AnnexTab anTab;

public RolesTab rlTab;

public AccountsTab acTab;

public WarehousesTab whTab;

public CommentTab cmTab;

public ClientTransTab ctTab;

public int opType;

/** Creates new form ClientsPanel */

public MClientsPanel(){}

public MClientsPanel(int opType,Object parentDlg,boolean t) {

this.parentDlg = parentDlg;

this.opType=opType;

initEnvironment();

}

private void initEnvironment(){

initDialog();

clTab = new ClientTab(opType);

auTab = new AuditTab(opType);

anTab = new AnnexTab(opType);

rlTab = new RolesTab(opType,this);

acTab = new AccountsTab(opType,this);

whTab = new WarehousesTab(opType,this);

cmTab = new CommentTab(opType);

ctTab = new ClientTransTab(opType);

tabbedPane.addTab( "General",clTab);

tabbedPane.addTab( "Roles",rlTab);

tabbedPane.addTab( "Accounts",acTab);

tabbedPane.addTab( "Warehouses",whTab);

tabbedPane.addTab( "ClientTrans",ctTab);

tabbedPane.addTab( "Comment",cmTab);

tabbedPane.addTab( "Audit",auTab);

tabbedPane.addTab( "Annex",anTab);

showDialog("dd",600,450);

}

public void onOk(){

clTab.saveData(opType);

acTab.saveData();

saveData();

JModules.updateInfo(JModules.selModName);

JMainDlg.mfRefer.updateInfo();

closeDialog();

}

}

Файл MItemsPanel

public class MItemsPanel extends SVModPanel{

public ItemTab iTab;

public CommentTab cmTab;

public AuditTab auTab;

public AnnexTab anTab;

public JDBConnect DBConnect = new JDBConnect();

public int opType;

public MItemsPanel(int opType,Object parentDlg,boolean t) {

this.parentDlg = parentDlg;

this.opType=opType;

initEnvironment();

}

private void initEnvironment(){

initDialog();

iTab = new ItemTab(opType);

cmTab = new CommentTab(opType);

auTab = new AuditTab(opType);

anTab = new AnnexTab(opType);

tabbedPane.addTab( "General",iTab);

tabbedPane.addTab( "Comment",cmTab);

tabbedPane.addTab( "Audit",auTab);

tabbedPane.addTab( "Annex",anTab);

showDialog("dd",600,450);

}

public void onOk(){

String i_id = new Integer(JModules.selTRecID).toString();

String clName1 = iTab.jTextField1.getText();

String clName2 = iTab.jTextField2.getText();

String street = iTab.jTextField3.getText();

String cl_city = iTab.jTextField4.getText();

String cl_land = iTab.jTextField5.getText();

String cl_tel = iTab.jTextField6.getText();

try {

Statement st = DBConnect.conn.createStatement();

JTParameter param = new JTParameter();

param.reset();

param.add(clName1,Types.VARCHAR);

param.add(clName2,Types.VARCHAR);

param.add(street,Types.VARCHAR);

param.add(cl_city,Types.VARCHAR);

param.add(cl_land,Types.VARCHAR);

param.add(cl_tel,Types.VARCHAR);

//param.add(cl_fax,Types.VARCHAR);

//param.add(cl_email,Types.VARCHAR);

//param.add(cl_www,Types.VARCHAR);

String sql="";

if(opType==1){ // New

sql= "insert into items(I_CODE,I_GR,I_DESC,I_MODEL,I_COND,I_EBAYID) values (?,?,?,?,?,?)";