Projekt Hurtownia. Koło Naukowe Programistów.NET Wyższa Szkoła Biznesu - National Louis University w Nowym Sączu

Podobne dokumenty
Prosta książka telefoniczna z wykorzystaniem zapisu do pliku

Leszek Stasiak Zastosowanie technologii LINQ w

Podstawowe możliwości programu Spectro Market Faktura

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

SUBIEKT GT IMPORT XLS Dokumenty

Krzysztof Kluza proste ćwiczenia z baz danych

WellCommerce Poradnik: Sprzedaż

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Instrukcja obsługi aplikacji MobileRaks 1.0

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

Instrukcja użytkownika programu QImport (wydanie II r.)

Instrukcja użytkownika programu QImport (wydanie I r.)

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Nowe funkcje w programie SYMFONIA Handel Premium w wersji 2009.c

Wypożyczalnia by CTI. Instrukcja

TEMAT ĆWICZENIA Zapoznanie z technologią LINQ

1. Opis ogólny. 2. Opis techniczny. 3. Wymagania techniczne

Studia podyplomowe. Programowanie na platformie Microsoft Visual Studio.NET

Nowe funkcje w programie SYMFONIA Handel Premium w wersji 2009

Opis nowych funkcji w programie Symfonia Handel w wersji 2010

Instrukcja programu ESKUP

Instrukcja obsługi programu

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

BAZY DANYCH Panel sterujący

System zarządzania firmą specyfikacja techniczna.

Podstawy technologii WWW

INSIGNUM Sprzedaż Detaliczna

AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. QuIDE Quantum IDE PODRĘCZNIK UŻYTKOWNIKA

Bazodanowe usługi sieciowe w technologii ASP.NET. dr inż. Tomasz Tatoń

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Dla kas Nano E w wersjach od 3.02 oraz Sento Lan E we wszystkich wersjach.

LABORATORIUM 6: ARKUSZ MS EXCEL JAKO BAZA DANYCH

Integracja Symfonia ERP ze sklepem internetowym

LISTA FUNKCJONALNOŚCI SYSTEMU MOBILNEGO esale Android

SHOPER INTEGRATOR BY CTI INSTRUKCJA

Baza danych sql. 1. Wprowadzenie

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

9 Zakup [ Zakup ] Zakup

SHOPER INTEGRATOR XL BY CTI INSTRUKCJA

plansoft.org Zmiany w Plansoft.org Błyskawiczny eksport danych PLANOWANIE ZAJĘĆ, REZERWOWANIE SAL I ZASOBÓW

5. Bazy danych Base Okno bazy danych

Instrukcja użytkownika

Podstawowe zagadnienia z zakresu baz danych

Bydgoskie Centrum Archiwizacji Cyfrowej sp. z o.o.

Szpieg 2.0 Instrukcja użytkownika

FIS SYSTEM MAGAZYNOWY

Wykład II. dr Artur Bartoszewski Wydział Nauczycielski, Kierunek Pedagogika Wprowadzenie do baz danych

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Program Dokumenty zbiorcze dla Subiekta GT.

Jak rozpocząć pracę w 360 Księgowość

Instrukcja instalacji i obsługi programu Szpieg 3

Po uzupełnieniu informacji i zapisaniu formularza, należy wybrać firmę jako aktywną, potwierdzając na liście dostępnych firm klawiszem Wybierz.

Program Import dokumentów XLS dla Subiekta GT.

humansoft HERMES SQL

SPIS TREŚCI 1. WPROWADZENIE DANYCH FIRMY WPROWADZENIE GRUP KONTRAHENTÓW WPROWADZENIE REJESTRÓW KASOWO BANKOWYCH...

Instrukcja użytkownika. Aplikacja Smart Paczka DPD

Program Rabator dla Microsoft Windows.

Oprogramowanie ILUO Biznes pozwala na jednoczesne zarządzanie wieloma sklepami Internetowymi zbudowanymi na oprogramowaniu różnych producentów.

Dostęp do baz danych w ASP.NET.

Jak obsługiwać zaliczki gotówkowe?

Instrukcja obsługi Panelu Sklep

Pobierz bibliotekę AccessDatabaseEngine dla systemów 64-bitowych.

IIIIIIIIIIIIIIIMMIMMIII

Prowadzenie Pełnej Księgowości Pierwsze Kroki

5.4. Tworzymy formularze

Instrukcja zgłaszania błędu

Dokumentacja użytkownika systemu

Instrukcja obsługi. Helpdesk. Styczeń 2018

MWS Mobile by CTI. Instrukcja

MULTI INTEGRATOR Instrukcja instalacji, konfiguracji.

Wprowadzenie. wersja SYSTIM

Szanowni Państwo. Należy przy tym pamiętać, że zmiana stawek VAT obejmie dwie czynności:

UNISERV s.c. K.Gałązka, P.Szewczyk ul. Kościuszki 42, Wyszków NIP:

System imed24 Instrukcja Moduł Finanse

WYDRA BY CTI. WYSYŁANIE DOKUMENTÓW ROZLICZENIOWYCH I ARCHIWIZACJA Instrukcja do programu

Firma Handlowa GIGA Utworzono : 28 czerwiec 2016

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Projektowanie baz danych

Tworzenie powiązań opakowania towary.

5.2. Pierwsze kroki z bazami danych

4.1 Użytkownicy [ Definicje ] 12. Po zakończonej pracy możemy wylogować użytkownika, korzystając z funkcji Wybór użytkownika

Poradnik użytkownika pomoc techniczna

Jak szybko wystawić fakturę w LeftHand? Instalacja programu

Dokumentacja użytkownika aplikacji: KanWebOffer v1.14

ShopGold Integrator by CTI. Instrukcja

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Ćwiczenie 4 Aktualizacja tabel. 1. Skopiuj aplikację przygotowaną na poprzednich zajęciach w katalogu SKOKI1 do nowego katalogu SKOKI2.

emszmal 3: Eksport wyciągów do Reset2 R2fk SQL (4.xx) (plugin dostępny wraz z dodatkiem Biznes)

emagazyn zarządzanie magazynem za pomocą skanerów kodów kreskowych.

Wystawianie dokumentów Ewa - Fakturowanie i magazyn

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Integracja oprogramowania GASTRO z systemem Blue Pocket

Referat pracy dyplomowej

INSTRUKCJA. ERP OPTIMA - Obsługa w zakresie podstawowym dla hufców. Opracował: Dział wdrożeń systemów ERP. Poznań, wersja 1.

Transkrypt:

Koło Naukowe Programistów.NET Wyższa Szkoła Biznesu - National Louis University w Nowym Sączu AUTORZY: Tomasz Gacek Piotr Janisz Grzegorz Popardowski Leszek Skocki Tomasz Ściurka Mateusz Wieloch OPIEKUN I MENTOR: mgr Artur Kornatka

Spis treści I. WSTĘP... 3 1. JAK DZIAŁA TRADYCYJNA HURTOWNIA?... 3 2. CEL PROJEKTU... 4 3. SZCZEGÓŁOWE CELE... 4 II. INNOWACYJNOŚĆ... 5 III. ZASTOSOWANE TECHNOLOGIE I NARZĘDZIA PROGRAMISTYCZNE... 6 IV. REALIZACJA... 7 1. BAZA DANYCH... 7 2. MAPOWANIE BAZY DANYCH KLASY DOSTĘPOWE DO DANYCH... 7 3. KLASY STANOWIĄCE INTERFEJS UŻYTKOWNIKA... 9 4. KOD WYBRANYCH KLAS... 10 KLASA FORMWYSTAWFAKTURE FAKTURA WŁASNA... 10 V. OPIS INTERESU UŻYTKOWNIKA GŁÓWNE FUNKCJE BIZNESOWE... 18 1. ZAMÓWIENIE WŁASNE ZAMAWIANIE TOWARÓW PRZEZ HURTOWNIE... 18 CO TO JEST?... 18 CZĘŚĆ BAZODANOWA... 18 INTERFEJS UŻYTKOWNIKA... 18 2. PRZYJĘCIE ZEWNĘTRZNE (PZ) PRZYJMOWANIE TOWARÓW DO MAGAZYNU... 20 CO TO JEST?... 20 CZĘŚĆ BAZODANOWA... 20 INTERFEJS UŻYTKOWNIKA... 20 3. FAKTURA OBCA EWIDENCJA ZAKUPU TOWARÓW... 22 CO TO JEST?... 22 CZĘŚĆ BAZODANOWA... 22 INTERFEJS UŻYTKOWNIKA... 22 4. KASA WYPŁACI (KW) OBSŁUGA KASY... 24 CO TO JEST?... 24 CZĘŚĆ BAZODANOWA... 24 INTERFEJS UŻYTKOWNIKA... 24 5. ZAMÓWIENIE OBCE PRZYJMOWANIE ZAMÓWIEŃ OD KLIENTÓW... 26 CO TO JEST?... 26 CZĘŚĆ BAZODANOWA... 26 INTERFEJS UŻYTKOWNIKA... 26 6. WYDANIE ZEWNĘTRZNE (WZ) WYDANIE TOWARU... 28 CO TO JEST?... 28 CZĘŚĆ BAZODANOWA... 28 INTERFEJS UŻYTKOWNIKA... 28 7. FAKTURA WŁASNA EWIDENCJA SPRZEDAŻY... 30 CO TO JEST?... 30 CZĘŚĆ BAZODANOWA... 30 INTERFEJS UŻYTKOWNIKA... 30 VI. SZCZEGÓŁOWE FUNKCJE BIZNESOWE... 32 1. EWIDENCJA TOWARÓW... 32 2. EWIDENCJA MAGAZYNÓW... 34 3. RODZAJE... 35 4. PRACOWNICY... 36 1

5. TYPY KLIENTÓW... 37 6. EWIDENCJA KLIENTÓW... 38 7. EWIDENCJA DOSTAWCÓW... 40 8. JEDNOSTKI MIARY... 42 9. KATEGORIE... 43 10. CENY TOWARÓW... 44 11. CENNIK TOWARÓW... 45 12. EWIDENCJA PRACOWNIKÓW OBCYCH... 46 13. OFERTY... 47 14. BANKI... 49 15. TYPY CEN... 50 VII. OPIS INSTALACJI, WYMAGANIA SPRZĘTOWE... 51 2

Projekt Hurtownia Wyższa Szkoła Biznesu - National Louis University w Nowym Sączu I. Wstęp 1. Jak działa tradycyjna hurtownia? Hurtownia jest firmą, której działalność opiera się na redystrybucji towarów kupionych w dużych ilościach od producentów, pomiędzy klientami zajmującymi się sprzedażą detaliczną. Podstawowym problemem jaki wiąże się z codzienną egzystencją tego przedsiębiorstwa jest wręcz kolosalna ilość dokumentów związanych z obrotem towaru, który musi być przyjęty, odpowiednio składowany, wydawany i sprzedawany. Niech skalę problemu zilustruje poniższy diagram. Oferta Obca Zamówienie Własne Przyjęcie Zewnętrzne Faktura Obca Kasa Wypłaci Kasa Przyjmie Faktura Własna Wydanie Zewnętrzne Zamówienie Obce Oferta Własna Dawniej, wszystkie dokumenty były wypisywane i składowane przez sztab ludzi. Dzisiaj już nikt nie wyobraża sobie ręcznego wypisywania np. Przyjęcia Zewnętrznego. Sztab ludzi został zastąpiony przez wyspecjalizowane oprogramowanie połączone z bazą danych. 3

2. Cel projektu Celem Projektu Hurtownia jest stworzenie, przy pomocy najnowocześniejszych technik programistycznych, oprogramowania zajmującego się przyjmowaniem, przetwarzaniem i przechowywaniem dokumentów w hurtowni. Wykorzystanie nowoczesnych narzędzi zapewni bogatą funkcjonalność i łatwość rozbudowywania projektu o nowe elementy. Cechą charakterystyczną produktu jest intuicyjny interfejs wykorzystujący najnowsze zdobycze technologii, włączając w to sterowanie aplikacją przy użyciu głosu. 3. Szczegółowe cele Ewidencja towarów Ewidencja dostawców Sporządzanie ofert Zarządzanie magazynami Ewidencja wydania i przyjęcia towarów ( WZ, PZ) Ewidencja klientów Zarządzanie zamówieniami ( własnymi i obcymi) Ewidencja zakupu i sprzedaży ( faktura obca i własna) Operacje kasowe ( KW, KP) Bezpieczne przechowywanie danych o Dostęp zarówno do danych aktualnych, jak i archiwalnych o Przechowywanie danych w bezpiecznej bazie danych o Szybki dostęp do danych Intuicyjny interfejs zapewniający szybki dostęp do danych o Dostęp do najważniejszych tabeli wymagający wyłącznie jednego kliknięcia o Ukrycie zbędnych z punku widzenia użytkownika danych o Jak najmniejsza liczba kontrolek zapewniająca skuteczną pracę o Jednolita budowa formatek o Obsługa poleceń głosowych Odpowiedni dobór technologii o Wykorzystanie łatwo dostępnych technologii o Aplikacja kliencka działająca w systemie Windows o Funkcjonalność aplikacji przez minimum 5 lat bez zmian technologicznych. o Funkcjonalność aplikacji przez minimum 10 lat przy założeniu aktualizacji technologii do nowszej wersji (bez kosztownej zmiany technologii na inną). Obecność dokumentacji technicznej 4

II. Innowacyjność Wykorzystanie nowych technologii jest kluczem do sukcesu, dlatego skorzystaliśmy z najnowocześniejszych narzędzi programistycznych. Zdając sobie sprawę z nasycenia rynku wiemy, że aby osiągnąć sukces nie wystarczy utworzyć dobrego oprogramowania. Potrzebne jest oprogramowanie innowacyjne. Wyobraź sobie, że do stworzenia nowej faktury nie musisz już przebijać się przez rozliczne menu, walcząc z nadmiernie skomplikowanym interfejsem i zbyt czułą myszką. Wyobraź sobie, że mówisz Faktury i przed Twoimi oczami pojawia się formatka Przeglądaj Faktury. Na komendę Nowa oprogramowanie posłusznie otwiera okienko do wprowadzania danych. Wpisujesz lub przedyktowujesz odpowiednie wartości i z nieukrywanym uczuciem satysfakcji zamykasz okienko słowem Zamknij. Czy to możliwe? Teraz już tak! Projekt Hurtownia poza konwencjonalnym interfejsem został wyposażony w rozpoznawanie mowy oparte na technologii Microsoft Speech Recognition. Praca z oprogramowaniem hurtowni jeszcze nigdy nie była tak łatwa! Po włączeniu rozpoznawania mowy odpowiednie okienka mogą obsłużyć następujące polecenia: - "New" - otwiera okienko do dodawania nowego rekordu - "Edit" - otwiera okienko służące do edytowania rekordu - "Delete" - usuwa zaznaczony rekord - "Refresh" - odświeża tabelę - "Close" - zamyka okienko W obecnej implementacji można korzystać tylko z poleceń wydawanych w języku angielskim, lecz nie powinno wpłynąć to znacząco na komfort pracy z programem, gdyż system obsługuje łatwe pojedyncze słowa. 5

III. Zastosowane technologie i narzędzia programistyczne Język C# Microsoft SQL Server 2008 LINQ Microsoft Visual Studio Entity Framework Microsoft Speech Recognition Wybór technologii nie jest przypadkowy. Jako Koło Naukowe Programistów.NET postanowiliśmy skorzystać z najnowszych produktów oferowanych przez firmę Microsoft. Wykorzystując technologie pochodzące od jednego producenta, udało nam się uzyskać dużą spójność utworzonego przez nas oprogramowania, jednocześnie redukując czas pracy potrzebny na jego ukończenie. Zastosowanie najbardziej zaawansowanych technologicznie rozwiązań bazodanowych, z rodziny ADO.NET Entity Framework, było nie lada wyzwaniem dla grupy projektowej. Jednak dzięki użyciu mapowania modelu danych Entity Framework zespół projektowy w stosunkowo krótkim czasie uzyskał aplikację bardziej rozbudowaną niż pierwotnie zakładano. 6

IV. Realizacja 1. Baza danych Jest to jeden z najbardziej złożonych elementów projektu. Bogata funkcjonalność aplikacji wymagała utworzenia przeszło 40 tabel i ogromnej ilości połączeń pomiędzy nimi. Poniżej prezentujemy diagram bazy danych w znacznym pomniejszeniu. W załączonych do dokumentacji plikach graficznych można obejrzeć diagram w wygodny sposób, dowolnie go powiększając. Aby zobaczyć powiększony diagram, proszę kliknąć na rysunek. 2. Mapowanie bazy danych klasy dostępowe do danych 7

Poniżej znajduje się pomniejszony i uproszczony schemat klas dostępowych do bazy danych. Do projektu dołączony został plik graficzny z możliwością powiększenia. Implementacja klas dostępowych zrealizowana została z wykorzystaniem technologii ADO.NET Entity Framework. Aby zobaczyć powiększony diagram, proszę kliknąć na rysunek. 8

3. Klasy stanowiące interfejs użytkownika Poniżej umieszczono pomniejszony diagram klas odpowiedzialnych za obsługę interfejsu użytkownika. Jak zwykle, do projektu dołączono również pełnowymiarowy plik graficzny. Każdy z prostokątów na poniższym diagramie reprezentuje jedną klasę. Na dolnym diagramie przykładowe 4 klasy z wyszczególnieniem pól i metod. Aby zobaczyć powiększony diagram, proszę kliknąć na rysunek. 9

4. Kod wybranych klas Klasa FormWystawFakture Faktura Własna using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace PropozycjaMenu public partial class FormWystawFakture : Form public FormWystawFakture() InitializeComponent(); public bool czyedycja = false; private int idfakturywlasnej; private int idzamowieniaobcego; private int idklienta; private int idfakturywlasnejstatusy; private int idformyplatnosci; private int idstatusu; private int idpracownika; private int idtowaru; private int idszczegoluzamowieniaobcego; private List<ViewSzczegolyFakturyWlasnej> lista; 10

public void ustawedytowane(int idfakturywlasnej, String numer, String datawystawienia, int idzamowieniaobcego, int idklienta, String klient, String nazwiskoklienta, String imieklienta, int idformyplatnosci, String formaplatnosci, String uwagi, String terminplatnosci, String datasprzedazy, int idfakturystatusy, int idstatusu, String status, int idpracownika, String nazwiskopracownika, String imiepracownika, String miejscewystawienia) this.idfakturywlasnej = idfakturywlasnej; this.idzamowieniaobcego = idzamowieniaobcego; this.idklienta = idklienta; this.idformyplatnosci = idformyplatnosci; this.idfakturywlasnejstatusy = idfakturystatusy; this.idstatusu = idstatusu; this.idpracownika = idpracownika; czyedycja = true; datetimepickerdatawystawienia.text = datawystawienia; textboxklient.text = klient; comboboxsposobplatnosci.text = formaplatnosci; richtextboxuwagi.text = uwagi; datetimepickerterminplatnosci.text = terminplatnosci; datetimepickerdatasprzedarzy.text = datasprzedazy; comboboxstatus.text = status; textboxpracownik.text = nazwiskopracownika + " " + imiepracownika; private void ustawnazweklienta(int idklienta, String nazwafirmy, String nazwisko, String imie) this.idklienta = idklienta; textboxklient.text = nazwafirmy+" "+nazwisko+" "+imie; private void ustawnazwepracownika(int idpracownika, String nazwisko, String imie) this.idpracownika = idpracownika; textboxpracownik.text = imie + " " + nazwisko; ; private void odswiez() FormWystawFakture_Load(null, EventArgs.Empty); private int licznik = -1;//dodatkowa zmienna służąco do liczenia kolumny "lp" oraz dodawania nowych wierszy do datagridview private void ustawpozycje(int idtowaru, String nazwa, String ilosc, String jm, String rabat, String cena, String stawkavat, String wartoscnetto, String vat, String wartoscbrutto) this.idtowaru = idtowaru; int lp = this.licznik;//zmienna "lp" odpowiadająca za wpisanie danych do nowego wiersza i wyświetlająca wartość w columnie "lp" datagridviewpozycje.rows[lp].cells[0].value = (lp + 1); datagridviewpozycje.rows[lp].cells[4].value = idtowaru; datagridviewpozycje.rows[lp].cells[5].value = nazwa; datagridviewpozycje.rows[lp].cells[6].value = ilosc; datagridviewpozycje.rows[lp].cells[7].value = jm; datagridviewpozycje.rows[lp].cells[8].value = rabat; datagridviewpozycje.rows[lp].cells[9].value = cena; datagridviewpozycje.rows[lp].cells[10].value = stawkavat; datagridviewpozycje.rows[lp].cells[11].value = wartoscnetto; datagridviewpozycje.rows[lp].cells[12].value = vat; datagridviewpozycje.rows[lp].cells[13].value = wartoscbrutto; private void FormWystawFakture_Load(object sender, EventArgs e) HurtowniaEntities hurtowniaentities = new HurtowniaEntities(); if (czyedycja == true) //wyświetlanie pozycji faktury lista = new List<ViewSzczegolyFakturyWlasnej>(); lista = hurtowniaentities.viewszczegolyfakturywlasnej.tolist<viewszczegolyfakturywlasnej>(); int licznik = (from pozycje in lista where pozycje.idfakturywlasnej == idfakturywlasnej select pozycje).count(); 11

* * + decimal cena; for (int i = 0; i < licznik; i++) datagridviewpozycje.rows.add(); datagridviewpozycje.rows[i].cells[0].value = (i + 1); datagridviewpozycje.rows[i].cells[1].value = (from pozycja in lista where pozycja.idfakturywlasnej == idfakturywlasnej orderby pozycja.idszczegolufakturywlasnej select pozycja.idfakturywlasnej).elementat(i); datagridviewpozycje.rows[i].cells[2].value = (from pozycja in lista where pozycja.idfakturywlasnej == idfakturywlasnej orderby pozycja.idszczegolufakturywlasnej select pozycja.idszczegolufakturywlasnej).elementat(i); datagridviewpozycje.rows[i].cells[3].value = (from pozycja in lista where pozycja.idfakturywlasnej == idfakturywlasnej orderby pozycja.idszczegolufakturywlasnej select pozycja.idszczegoluzamowieniaobcego).elementat(i); datagridviewpozycje.rows[i].cells[4].value = (from pozycja in lista where pozycja.idfakturywlasnej == idfakturywlasnej orderby pozycja.idszczegolufakturywlasnej select pozycja.idtowaru).elementat(i); datagridviewpozycje.rows[i].cells[5].value = (from pozycja in lista where pozycja.idfakturywlasnej == idfakturywlasnej orderby pozycja.idszczegolufakturywlasnej select pozycja.nazwa).elementat(i); datagridviewpozycje.rows[i].cells[6].value = (from pozycja in lista where pozycja.idfakturywlasnej == idfakturywlasnej orderby pozycja.idszczegolufakturywlasnej select pozycja.ilosc).elementat(i); datagridviewpozycje.rows[i].cells[7].value = (from pozycja in lista where pozycja.idfakturywlasnej == idfakturywlasnej orderby pozycja.idszczegolufakturywlasnej select pozycja.j_m).elementat(i); datagridviewpozycje.rows[i].cells[8].value = (from pozycja in lista where pozycja.idfakturywlasnej == idfakturywlasnej orderby pozycja.idszczegolufakturywlasnej select pozycja.rabat).elementat(i); cena = Convert.ToDecimal((from pozycja in lista where pozycja.idfakturywlasnej == idfakturywlasnej orderby pozycja.idszczegolufakturywlasnej select pozycja.cenanetto).elementat(i)); datagridviewpozycje.rows[i].cells[9].value = Decimal.Round(cena, 2); datagridviewpozycje.rows[i].cells[10].value = (from pozycja in lista where pozycja.idfakturywlasnej == idfakturywlasnej orderby pozycja.idszczegolufakturywlasnej select pozycja.stawkavat).elementat(i); //Obliczanie //wartość netto datagridviewpozycje.rows[i].cells[11].value = Decimal.Round(((Convert.ToDecimal(dataGridViewPozycje.Rows[i].Cells[6].Value)) (Convert.ToDecimal(dataGridViewPozycje.Rows[i].Cells[8].Value))), 2); //VAT datagridviewpozycje.rows[i].cells[12].value = Decimal.Round(((Convert.ToDecimal(dataGridViewPozycje.Rows[i].Cells[10].Value)) (Convert.ToDecimal(dataGridViewPozycje.Rows[i].Cells[9].Value) / 100)), 2); //wartość brutto datagridviewpozycje.rows[i].cells[13].value = Decimal.Round(((Convert.ToDecimal(dataGridViewPozycje.Rows[i].Cells[10].Value)) (Convert.ToDecimal(dataGridViewPozycje.Rows[i].Cells[11].Value))), 2); else comboboxstatus.datasource = from statusy in hurtowniaentities.statusydokumentow select statusy; comboboxstatus.displaymember = "tytul"; comboboxstatus.valuemember = "idstatusudokumentu"; comboboxsposobplatnosci.datasource = 12

from platnosc in hurtowniaentities.formyplatnosci select platnosc; comboboxsposobplatnosci.displaymember = "nazwa"; comboboxsposobplatnosci.valuemember = "idformyplatnosci"; private void datagridviewpozycje_celldoubleclick(object sender, DataGridViewCellEventArgs e) private void toolstripbuttonnowapozycja_click(object sender, EventArgs e) FormSzczegolyFakturyWlasnej formszczegolyfakturywlasnej = new FormSzczegolyFakturyWlasnej(); formszczegolyfakturywlasnej.mdiparent = this.mdiparent; if (czyedycja == true) formszczegolyfakturywlasnej.nowapozycja(idfakturywlasnej); formszczegolyfakturywlasnej.odswiez = new FormSzczegolyFakturyWlasnej.Odswiez(odswiez); else formszczegolyfakturywlasnej.ustaw = new FormSzczegolyFakturyWlasnej.Ustaw(ustawPozycje); this.licznik++;//przy kliknięciu nowa pozycja zwiększamy licznik o 1 datagridviewpozycje.rows.add();//i dodajemy nowy wiersz w datagridviewpozycje formszczegolyfakturywlasnej.show(); private void toolstripbuttonotworz_click(object sender, EventArgs e) FormSzczegolyFakturyWlasnej formszczegolyfakturywlasnej = new FormSzczegolyFakturyWlasnej(); formszczegolyfakturywlasnej.mdiparent = this.mdiparent; if (czyedycja == true) formszczegolyfakturywlasnej.ustawedytowane2(convert.toint16(datagridviewpozycje.selectedrows[0].cells[1 ].Value), Convert.ToInt16(dataGridViewPozycje.SelectedRows[0].Cells[2].Value), Convert.ToInt16(dataGridViewPozycje.SelectedRows[0].Cells[3].Value), Convert.ToInt16(dataGridViewPozycje.SelectedRows[0].Cells[4].Value), Convert.ToString(dataGridViewPozycje.SelectedRows[0].Cells[5].Value), Convert.ToString(dataGridViewPozycje.SelectedRows[0].Cells[6].Value), Convert.ToString(dataGridViewPozycje.SelectedRows[0].Cells[7].Value), Convert.ToString(dataGridViewPozycje.SelectedRows[0].Cells[8].Value), Convert.ToString(dataGridViewPozycje.SelectedRows[0].Cells[9].Value), Convert.ToString(dataGridViewPozycje.SelectedRows[0].Cells[10].Value)); formszczegolyfakturywlasnej.odswiez = new FormSzczegolyFakturyWlasnej.Odswiez(odswiez); else formszczegolyfakturywlasnej.ustawedytowane(convert.toint16(datagridviewpozycje.selectedrows[0].cells[4].value), Convert.ToString(dataGridViewPozycje.SelectedRows[0].Cells[5].Value), Convert.ToString(dataGridViewPozycje.SelectedRows[0].Cells[6].Value), Convert.ToString(dataGridViewPozycje.SelectedRows[0].Cells[7].Value), Convert.ToString(dataGridViewPozycje.SelectedRows[0].Cells[8].Value), Convert.ToString(dataGridViewPozycje.SelectedRows[0].Cells[9].Value), Convert.ToString(dataGridViewPozycje.SelectedRows[0].Cells[10].Value)); formszczegolyfakturywlasnej.ustaw = new FormSzczegolyFakturyWlasnej.Ustaw(ustawPozycje); formszczegolyfakturywlasnej.text = "Edytuj pozycje"; formszczegolyfakturywlasnej.show(); 13

private void toolstripbuttonusun_click(object sender, EventArgs e) if (czyedycja == true) //przy edycji usuwanie pozycji bezpośrednio z bazy danych HurtowniaEntities hurtowniaentities = new HurtowniaEntities(); int idkasowanego = Convert.ToInt16(dataGridViewPozycje.SelectedRows[0].Cells[2].Value); var kasowany = ( from pozycja in hurtowniaentities.szczegolyfakturywlasnej where pozycja.idszczegolufakturywlasnej == idkasowanego select pozycja ).First(); hurtowniaentities.deleteobject(kasowany); hurtowniaentities.savechanges(); FormWystawFakture_Load(null, EventArgs.Empty); else //usuwanie zaznaczonego wiersza/pozycji z data gridview datagridviewpozycje.rows.removeat(convert.toint32(datagridviewpozycje.selectedrows[0].index)); this.licznik--; int lp = this.licznik; for (int i = 0; i <= licznik; i++) datagridviewpozycje.rows[i].cells[0].value = (i + 1).ToString(); private void buttonwybierzklienta_click(object sender, EventArgs e) FormPrzegladajKlientow formprzegladajklientow = new FormPrzegladajKlientow(); formprzegladajklientow.mdiparent = this.mdiparent; formprzegladajklientow.ustaw = new FormPrzegladajKlientow.Ustaw(ustawNazweKlienta); formprzegladajklientow.show(); private void buttonwybierzpracownika_click(object sender, EventArgs e) FormPrzegladajPracownikow formprzegladajpracownikow = new FormPrzegladajPracownikow(); formprzegladajpracownikow.mdiparent = this.mdiparent; formprzegladajpracownikow.ustaw = new FormPrzegladajPracownikow.Ustaw(ustawNazwePracownika); formprzegladajpracownikow.show(); private bool lstatus = true;//przy edycji po kliknięciu na combobox ładuje liste private void comboboxstatus_mouseclick(object sender, MouseEventArgs e) if (czyedycja == true && lstatus == true) lstatus = false; HurtowniaEntities hurtowniaentities = new HurtowniaEntities(); comboboxstatus.datasource = from statusy in hurtowniaentities.statusydokumentow select statusy; comboboxstatus.displaymember = "tytul"; comboboxstatus.valuemember = "idstatusudokumentu"; private bool lsposob = true; private void comboboxsposobplatnosci_mouseclick(object sender, MouseEventArgs e) if (czyedycja == true && lsposob == true) lsposob = false; HurtowniaEntities hurtowniaentities = new HurtowniaEntities(); comboboxsposobplatnosci.datasource = from platnosc in hurtowniaentities.formyplatnosci select platnosc; comboboxsposobplatnosci.displaymember = "nazwa"; comboboxsposobplatnosci.valuemember = "idformyplatnosci"; 14

public delegate void OdswiezFaktury(); public OdswiezFaktury odswiezfaktury; private void toolstripbuttonzapisz_click(object sender, EventArgs e) if (textboxpracownik.text.length == 0) MessageBox.Show("Wyberz pracownika!", "Błąd!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); else HurtowniaEntities hurtowniaentities = new HurtowniaEntities(); if (czyedycja == true) var zamowienie = (from zamowienia in hurtowniaentities.zamowieniaobce where zamowienia.idzamowieniaobcego == idzamowieniaobcego select zamowienia).first(); var faktura = (from zamowienia in hurtowniaentities.fakturywlasne where zamowienia.idfakturywlasnej == idfakturywlasnej select zamowienia).first(); faktura.datawystawienia = datetimepickerdatawystawienia.value; zamowienie.klienci = ( from dostawca in hurtowniaentities.klienci where dostawca.idklienta == idklienta select dostawca ).First(); if (lsposob == false) this.idformyplatnosci = Convert.ToInt16(comboBoxSposobPlatnosci.SelectedValue.ToString()); faktura.formyplatnosci = ( from statusy in hurtowniaentities.formyplatnosci where statusy.idformyplatnosci == idformyplatnosci select statusy ).First(); zamowienie.uwagi = richtextboxuwagi.tostring(); faktura.terminplatnowsci = datetimepickerterminplatnosci.value; faktura.datasprzedazy = datetimepickerdatasprzedarzy.value; var fakturystatusy = (from statusy in hurtowniaentities.fakturywlasnestatusy where statusy.idfakturywlasnestatusy == idfakturywlasnejstatusy select statusy).first(); fakturystatusy.fakturywlasne = ( from wze in hurtowniaentities.fakturywlasne where wze.idfakturywlasnej == idfakturywlasnej select wze ).First(); if (lstatus == false) this.idstatusu = Convert.ToInt16(comboBoxStatus.SelectedValue.ToString()); fakturystatusy.statusydokumentow = ( from statusy in hurtowniaentities.statusydokumentow where statusy.idstatusudokumentu == idstatusu select statusy ).First(); fakturystatusy.pracownicy = ( from pracownicy in hurtowniaentities.pracownicy where pracownicy.idpracownika == idpracownika select pracownicy ).First(); else //zapisywanie klienta w zamowieniu obcym 15

ZamowieniaObce zamowienie = new ZamowieniaObce(); zamowienie.klienci = ( from pracownik in hurtowniaentities.klienci where pracownik.idklienta == idklienta select pracownik ).First(); zamowienie.uwagi = richtextboxuwagi.text.tostring(); hurtowniaentities.addtozamowieniaobce(zamowienie); hurtowniaentities.savechanges(); //pobranie idzamowieniawlasnego this.idzamowieniaobcego = Convert.ToInt16((from zamowienia in hurtowniaentities.zamowieniaobce orderby zamowienia.idzamowieniaobcego descending select zamowienia.idzamowieniaobcego).first()); //zapisywanie faktury FakturyWlasne faktura = new FakturyWlasne(); faktura.numer = "Faktura 00001/2010"; faktura.datawystawienia = datetimepickerdatawystawienia.value; faktura.zamowieniaobce = ( from zamowienia in hurtowniaentities.zamowieniaobce where zamowienia.idzamowieniaobcego == idzamowieniaobcego select zamowienia ).First(); int idformyplatnosci = Convert.ToInt16(comboBoxSposobPlatnosci.SelectedValue.ToString()); faktura.formyplatnosci = ( from statusy in hurtowniaentities.formyplatnosci where statusy.idformyplatnosci == idformyplatnosci select statusy ).First(); faktura.terminplatnowsci = datetimepickerterminplatnosci.value; faktura.datasprzedazy = datetimepickerdatasprzedarzy.value; hurtowniaentities.addtofakturywlasne(faktura); hurtowniaentities.savechanges(); //pobranie idfakturyobcej this.idfakturywlasnej = Convert.ToInt16((from zamowienia in hurtowniaentities.fakturywlasne orderby zamowienia.idfakturywlasnej descending select zamowienia.idfakturywlasnej).first()); //zapisywanie stausu FakturyWlasneStatusy fakturystatusy = new FakturyWlasneStatusy(); fakturystatusy.fakturywlasne = ( from wuz in hurtowniaentities.fakturywlasne where wuz.idfakturywlasnej == idfakturywlasnej select wuz ).First(); int idstatusu = Convert.ToInt16(comboBoxStatus.SelectedValue.ToString()); fakturystatusy.statusydokumentow = ( from statusy in hurtowniaentities.statusydokumentow where statusy.idstatusudokumentu == idstatusu select statusy ).First(); fakturystatusy.pracownicy = ( from pracownicy in hurtowniaentities.pracownicy where pracownicy.idpracownika == idpracownika select pracownicy ).First(); hurtowniaentities.addtofakturywlasnestatusy(fakturystatusy); hurtowniaentities.savechanges(); //pętla zapisująca pokolei pozycje (szczegóły) faktury for (int i = 0; i <= licznik; i++) //zapisywanie towaru w szczegołachzamowieniaobcego 16

SzczegolyZamowieniaObcego szczegolyzamowienia = new SzczegolyZamowieniaObcego(); int idtowaru = Convert.ToInt16(dataGridViewPozycje.Rows[i].Cells[4].Value); szczegolyzamowienia.towary = ( from towar in hurtowniaentities.towary where towar.idtowaru == idtowaru select towar ).First(); szczegolyzamowienia.rabat = float.parse(datagridviewpozycje.rows[i].cells[8].value.tostring()); hurtowniaentities.addtoszczegolyzamowieniaobcego(szczegolyzamowienia); hurtowniaentities.savechanges(); //pobranie idzamowienia this.idszczegoluzamowieniaobcego = Convert.ToInt16((from zamowienia in hurtowniaentities.szczegolyzamowieniaobcego orderby zamowienia.idszczegoluzamowieniaobcego descending select zamowienia.idszczegoluzamowieniaobcego).first()); //zapisywanie szczegolu faktury obcej SzczegolyFakturyWlasnej szczegolyfaktury = new SzczegolyFakturyWlasnej(); szczegolyfaktury.fakturywlasne = ( from wzet in hurtowniaentities.fakturywlasne where wzet.idfakturywlasnej == idfakturywlasnej select wzet ).First(); szczegolyfaktury.ilosc = Convert.ToInt32(dataGridViewPozycje.Rows[i].Cells[6].Value); szczegolyfaktury.cenanetto = Convert.ToDecimal(dataGridViewPozycje.Rows[i].Cells[9].Value); szczegolyfaktury.szczegolyzamowieniaobcego = ( from szcz in hurtowniaentities.szczegolyzamowieniaobcego where szcz.idszczegoluzamowieniaobcego == idszczegoluzamowieniaobcego select szcz ).First(); hurtowniaentities.addtoszczegolyfakturywlasnej(szczegolyfaktury); hurtowniaentities.savechanges(); hurtowniaentities.savechanges(); if (odswiezfaktury!= null) odswiezfaktury(); Close(); 17

V. Opis interesu użytkownika główne funkcje biznesowe 1. Zamówienie Własne zamawianie towarów przez hurtownie Co to jest? Zamówienie Własne to dokument przekazywany dostawcy, w którym znajduje się wykaz zamówionych przez hurtownię towarów. Na podstawie Zamówienia Własnego zamawiane są towary od zewnętrznych kontrahentów (często producentów). Część bazodanowa ZamowieniaWlasne SzczegolyZamowieniaWlasnego. Z punktu widzenia bazy danych, informacje o zamówieniach są przechowywane w tabeli ZamowieniaWlasne. Projektując system zdecydowano, że informacje związane z samym dokumentem zamówienia (takie jak nr dokumentu, data wystawienia, itp.) będą przechowywane w tabeli ZamowieniaWlasne, natomiast poszczególne pozycje zamówienia (czyli jakie towary będą zamawiane) znajdą się w tabeli SzczegolyZamowieniaWlasnego. Interfejs użytkownika PrzeglądajZamówieniaWłasne DodawanieZamówieniaWłasnego EdytowanieZamówieniaWłasnego NowaPozycjaZamówieniaWłasnego Okno dialogowe PrzeglądajZamówieniaWłasne pozwala na przeglądanie wpisów w tabeli ZamowieniaWlasne. Istnieje możliwość wyszukiwania według numeru dokumenu oraz sortowania według Numeru, Daty wystawienia, Dostawcy oraz Statusu. Aby wystawić nowe zamówienie należy wybrać przycisk Nowe Zamówienie. Spowoduje to uruchomienie okna DodawanieZamówieniaWłasnego. W oknie DodawanieZamówieniaWłasnego użytkownik może wyspecyfikować dane zamówienia i dodać do niego towary. Dodawanie nowego towaru każdorazowo powoduje wyświetlenie okna NowaPozcyjaZamówieniaWłasnego. Istnieje możliwość edycji oraz usuwania danych zamówienia. 18

19

2. Przyjęcie Zewnętrzne (PZ) przyjmowanie towarów do magazynu Co to jest? Przyjęcie Zewnętrzne to dokument potwierdzający przyjęcie towaru na magazyn. W praktyce przyjęcie towaru odbywa się najczęściej na podstawie faktury zakupu. W wielu przypadkach istnieje więc bliska zależność między fakturą zakupu a PZ. Część bazodanowa PZ SzczegolyPZ W bazie danych PZ obsługiwana jest przez tabelę PZ, zawierającą takie pola jak: idpz, idzamowieniawłasnego, datawystawienia, numer, idpracownika, miejscewystawienia, idpracownikaobcegoprzekazujacego, uwagi, czyaktywny. Interfejs użytkownika W systemie jest okno Przeglądaj Pz które umożliwia przeglądanie aktywnych wpisów w bazie danych z możliwością wyszukiwania i sortowania. Wpisy do PZ można dodawać, usuwać i edytować. Aby dodać nową PZ do systemu, należy kliknąć na przycisk Nowa PZ. 20

21

3. Faktura Obca ewidencja zakupu towarów Co to jest? Faktura VAT to podstawowy dokument funkcjonujący w obrocie gospodarczym. Wystawianie i obsługa faktur to jedno z podstawowych zadań jakie powinien spełniać system do obsługi sprzedaży. Faktura Obca to dokument wystawiany przez kontrahentów naszemu przedsiębiorstwu. Rejestruje on dokonanie zakupu. Faktura Obca to dokument, który trafia do naszego przedsiębiorstwa w formie papierowej i musi być wprowadzony do systemu. Część bazodanowa W bazie danych tabela FakturyObce odpowiada za przechowywanie informacji o fakturach. Tabela FakturyObce przechowuje takie informacje jak nrfaktury, terminplatnosci, datewystawienia, datasprzedazy, uwagi, miejscewystawienia. Pozycje Faktury Obcej są przechowywane w tabeli o nazwie SzczegolyFakturyObcej powiązanej z tabelą FakturyObce. Ponadto tabela FakturyObce powiązana jest z tabelą ZamowieniaWlasne (Faktura Obca jest konsekwencją Zamówienia własnego musimy zamówić towar aby później móc otrzymać fakturę od kontrahenta). Interfejs użytkownika Dostęp do danych z tabeli FakturyObce otrzymujemy dzięki wywołaniu okna Przeglądaj Faktury Obce. Możemy przeglądać wystawione wcześniej aktywne Faktury Obce, możemy również dzięki przyciskom w tym okienku edytować i usuwać rekordy. Utworzyć, a raczej wprowadzić nową Fakturę Obcą możemy korzystając z przycisku Nowa Faktura. Otworzy się wtedy nowe okno Nowa Faktura, które umożliwi sprecyzowanie takich parametrów jak wspomniane wcześniej: nrfaktury, terminplatnosci, datewystawienia, datesprzedazy, uwagi, miejscewystawienia oraz umożliwi dodanie pozycji do Faktury Obcej, poprzez okienko o nazwie Nowa Pozycja. W oknie Przeglądaj Faktury możemy korzystać z funkcji sortowania oraz wyszukiwnia. 22

23

4. Kasa Wypłaci (KW) obsługa kasy Co to jest? Kasa Wypłaci jest to pokwitowanie wypłaty gotówki z kasy firmy. Część bazodanowa W tabeli znajdują się takie informacje jak idkw, kwota,datawystawienia,numer, raportkasowynumer, raportkasowypozycja, idzamówieniawłasnego, tytułem, idpracownika, czyaktywny. Interfejs użytkownika Oknem pozwalającym na operacje związane z KW jest okno przeglądajkw. Korzystając z przycisku Dodaj KW możemy również tworzyd nowe KW. Istniej również możliwośd usuwania istniejących dokumentów, edycji i sortowania. 24

25

5. Zamówienie Obce przyjmowanie zamówień od klientów Co to jest? Podstawowym narzędziem do obsługi klienta są zamówienia obce. Pozwalają one na tworzenie przez pracownika zamówienia uwzględniając indywidualne warunki handlowe dla wybranego kontrahenta np. rabat. Z zamówienia możemy wystawid następnie odpowiedni dokument sprzedażowy bądź WZ (Wydanie Zewnętrzne). Część bazodanowa Tabela zamówienia obce zawiera pola idzamówieniaobcego, idklienta, datawystawienia, numer, idformypłatności, uwagi, miejsce, terminrealizacji, idpracownikaobcegowystawiającego i czyaktywny. Interfejs użytkownika Oknem pozwalającym na przeglądanie Zamówieo Obcych jest okno Przeglądaj Zamówienia Klientów. Aby wystawid nowe zamówienie klienta użytkownik musi kliknąd na przycisk Nowy. Formatka WystawZamówieniaKlientów pozwala na wybranie daty wystawienia zamówienia poprzez naciśnięcie datetimepicker'a i wybranie daty, wybranie klienta, wybranie pozycji z datagridview i wczytanie ich do zamówienia jak również dodanie z poziomu okna nowych pozycji. Dodatkowo poniżej można wybrad sposób płatności, termin realizacji zamówienia i dopisad ewentualne uwagi do zamówienia. Finalizujemy tworzenie nowego zamówienia poprzez naciśnięcie przycisku Zapisz i zamknij, co powoduje zapisanie wszystkich informacji wprowadzonych do bazy danych. 26

27

6. Wydanie Zewnętrzne (WZ) wydanie towaru Co to jest? WZ, czyli jeden z podstawowych dokumentów magazynowych Wydanie Zewnętrzne służy do udokumentowania wydania towaru z magazynu. Najczęściej jest wystawiany na podstawie Zamówienia i bardzo często na jego podstawie wystawiana jest Faktura. Część bazodanowa Wydanie Zewnętrzne reprezentowane jest w bazie danych przez tabelę o nazwie WZ. Tabela WZ jest połączona z tabelą SzczegolyWZ, gdzie przechowywane są pozycje WZ. Interfejs użytkownika Okno, które pozwala na przeglądanie WZ w systemie to Przeglądaj WZ. Można w tym oknie obejrzeć wszystkie oznaczone jako aktywne WZ. Aby utworzyć nowy dokument WZ należy kliknać na przycisk Nowe WZ, otwarte zostanie nowe okno umożliwiające dodanie pozycji do WZ. Podczas wystawiania WZ należy zdefinować m.in. takie parametry jak Klient(nowe okno umożliwające wybór klienta), Pracownik odbierający (nowe okno umożliwające wybór Pracownika) oraz Pracownik wystawiający (nowe okno umożliwające wybór Pracownika). 28

29

7. Faktura Własna ewidencja sprzedaży Co to jest? Faktura VAT to podstawowy dokument funkcjonujący w obrocie gospodarczym. Wystawianie i obsługa faktur to jedno z podstawowych zadań jakie powinien spełniać system do obsługi sprzedaży. Faktura Własna to dokument, który jest zawsze wystawiany na zakończenie procesu sprzedaży przez nasze przedsiębiorstwo kontrahentom. Część bazodanowa W bazie danych tabela FakturyWlasne odpowiada za przechowywanie informacji o fakturach i możliwość wystawiana faktur. Tabela FakturyWlasne przechowuje takie informacje jak nrfaktury, terminplatnosci, datewystawienia, datesprzedazy, uwagi, miejscewystawienia. Pozycje Faktury Własnej są przechowywane w tabeli o nazwie SzczegolyFakturyWlasnej powiązanej z tabelą FakturyWlasne. Ponadto tabela FakturyWlasne powiązana jest z tabelą ZamowieniaObce. Interfejs użytkownika Dostęp do danych z tabeli FakturyWlasne otrzymujemy dzięki wywołaniu okna Faktury. Możemy przeglądać wystawione wcześniej aktywne Faktury, możemy również dzięki przyciskom w tym okienku edytować i usuwać rekordy. Utworzyć, a raczej wprowadzić nową Fakturę możemy korzystając z przycisku Nowa Faktura. Otworzy się wtedy nowe okno Nowa Faktura, które umożliwi sprecyzowanie takich parametrów jak wspomniane wcześniej: nrfaktury, terminplatnosci, datewystawienia, datesprzedazy, uwagi, miejscewystawienia oraz umożliwi dodanie pozycji do Faktury, poprzez okienko o nazwie Nowa Pozycja. W oknie Przeglądaj Faktury możemy korzystać z funkcji sortowania oraz wyszukiwnia. 30

31

VI. Szczegółowe funkcje biznesowe 1. Ewidencja towarów Zebranie w jednym miejscu informacji dotyczących posiadanych na stanie zasobów to jedna z podstawowych funkcjonalności systemów do obsługi sprzedaży. Konieczność kontrolowania stanów magazynowych, możliwość wyszukiwania, sortowania według różnych kryteriów to cechy od zawsze towarzyszące tego typu systemom. W bazie danych tabela o nazwie Towary jest w swego rodzaju centrum całego systemu. Tabela Towary zawiera następujące pola: id, nazwa, kod kreskowy, id kategorii, IdJednostkiMiary, stawkavatsprzedazy, stawkavatzakupu, opis, PKWiU, minimalnailosc, maksymalnailosc, terminprzydatnosciwdniach, nr towaru, indeks handlowy, kod, nr serii, id rodzaju, czyaktywny. Podczas projektowania bazy danych przyjęto założenie, że towarem może być na przykład pojedyncza istniejąca fizycznie sztuka towaru (np. 1 batonik) lub towarem może również być paleta przedmiotów (np. paleta batoników). Decyzję na temat tego co jest towarem podejmować będzie osoba wprowadzająca dane do bazy. Jeśli wprowadzi do bazy paletę batoników, towar ten będzie musiał być sprzedany jako paleta, czyli za jednym razem, bez możliwość podzielenia. Jeśli do bazy zostanie wprowadzony towar jako pojedynczy batonik i wskazana zostanie liczba sztuk, wtedy będzie możliwa sprzedaż na sztuki. Warto również zaznaczyć, że w tabeli Towary nie jest przechowywana informacja o cenie. Cena jest przechowywana w tabeli CenyTowarow. Funkcjonalność okienka Przeglądaj Towary sprowadza się do umożliwieniu przeglądania aktywnych wpisów w bazie danych z tabeli Towary z możliwością wyszukiwania i sortowania według nazwy, kodu, kategorii oraz rodzaju. Użytkownik może dodawać nowe towary za pomocą przycisku Nowy, edytować dane za pomocą przycisku Edytuj, oraz usuwać rekordy. Okienko Przeglądaj Towary będzie pojawiać się wielokrotnie w systemie, za każdym razem gdy będzie potrzeba dokonania wyboru towaru, na przykład przy dodawaniu pozycji w fakturze czy wydaniu zewnętrznym. 32

33

2. Ewidencja magazynów Tabela Magazyny przechowuje informacje o magazynach jakie funkcjonują w systemie. Umożliwia obsługę wielu magazynów w systemie, o ile jest taka potrzeba. Formatkę Przeglądaj Magazyny można wywołać z menu głównego. Formatka umożliwia sortowanie, wprowadzanie nowych magazynów, usuwanie oraz edycję istniejących wpisów. 34

3. Rodzaje Baza danych uwzględnia możliwośd przypisania produktów do odpowiednich kategorii (nazywanych rodzajami). Rozróżnienie wielu rodzajów produktów ułatwia zapanowanie nad ogromną ilością produktów i odpowiednim rozlokowaniem towarów w magazynach. 35

4. Pracownicy 36

5. Typy klientów 37

6. Ewidencja klientów 38

39

7. Ewidencja dostawców 40

41

8. Jednostki miary 42

9. Kategorie 43

10. Ceny Towarów 44

11. Cennik Towarów 45

12. Ewidencja pracowników obcych 46

13. Oferty Projektując system zadecydowano, że baza danych będzie zawierała tabelę Oferty. Tabela ta przechowuje dokumenty wystawiane przez hurtownię klientom, dokumentujące zainteresowanie zakupem towaru lub towarów. Dokument ten otrzymuje klient i na jego podstawie może być później wystawione zamówienie, może ale nie musi. Dokument ten spełnia rolę informacyjną dla klienta. Tabela Oferty zawiera pola takie jak: idtowaru, ilość, cena, data wystawienia oferty, czas realizacji, idklienta oraz termin ważności. Okienko pozwalająca przeglądanie wystawionych ofert to Przeglądaj Oferty. Aby wystawić nową ofertę użytkownik klika na przycisk Nowy. Okno Przeglądaj Oferty umożliwia edycję i usuwanie rekordów. Okienko Przeglądaj Oferty wyposażone jest również w checkbox umożliwiające sortowanie. 47

48

14. Banki 49

15. Typy cen 50

VII. Opis instalacji, wymagania sprzętowe Wymagania: Microsoft Windows Vista, 7 lub nowszy 2GB RAM procesor Intel Core Duo 2,5Ghz, (zalecany szybki procesor z serii i5) Microsoft SQL Server 2008 z bazą danych Przed prawidłowym uruchomieniem aplikacji wymagana jest: - instalacja bazy danych na SQL Server ( Attach pliku hurtownia.mdf oraz hurtownia_log.ldf ) Następnie należy zainstalować aplikację kliencką na komputerze mogącym komunikować się z bazą danych. Z uwagi na specyfikę biblioteki Speech Recognition (rozpoznawanie mowy) korzystanie z tej funkcjonalności możliwe jest tylko i wyłącznie korzystając z angielskiej lub amerykańskiej wersji systemu Windows. Na obecną chwilę nie jest jeszcze dostępna polska wersja tej biblioteki. Projekt został stworzony przy wykorzystaniu środowiska.net Framework 3.5, w Visual Studio 2008 Professional. 51