tema : evidenta unei farmacii - ctimbg.wikispaces.comevidenta+unei... · aceasta conţine numele,...

31
Colegiul Tehnic ,,IULIU MANIU”, BUcUresti PROIECT ATESTAT INFORMATICA TEMA : EVIDENTA UNEI FARMACII Proiect realizat de : BORNEA I. LILIANA-GEORGIANA CHIOSEA L.G. MARIANA-GEORGIANA-LAVINIA Profesor coordonator: prof. Brebenel Gheorghe 2013

Upload: dangdung

Post on 01-Feb-2018

259 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

Colegiul Tehnic ,,IULIU MANIU”, BUcUresti

PROIECT

ATESTAT INFORMATICA

TEMA : EVIDENTA UNEI FARMACII

Proiect realizat de : BORNEA I. LILIANA-GEORGIANA CHIOSEA L.G. MARIANA-GEORGIANA-LAVINIA

Profesor coordonator:

prof. Brebenel Gheorghe

2013

Page 2: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

2

Cuprins

1. Ce este Oracle?

2. Descrierea aplicaţiei

3. Modelul conceptual

4. Maparea modelului conceptual

5. Cod SQL

6. Bibliografie

Page 3: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

3

1. CE ESTE ORACLE?

Oracle constă dintr-un set complet de constructori de aplicaţii şi produse pentru

utilizatori, căutând să asigure soluţii complete în tehnologia informaţiei.

Aplicaţiile Oracle sunt portabile peste un număr mare de staţii de lucru şi sisteme de

operare, de la calculatoare personale la procesoare paralele.

Oracle este înzestrat cu un flexibil Sistem de Management al Bazelor de Date (DBMS)

- Serverul Oracle - pentru stocarea şi managementul informaţiei utilizate de aplicaţii.

Printre multele dezvoltări de aplicaţii şi produse pentru utilizatori accesibile în familia

Oracle, există o posibilitate comună pentru a accesa baza de date.

Dacă direct sau indirect, aceasta este realizată prin Limbajul cu Structura de Interogare

(SQL),va fi un subiect pe care noi il vom trata în acest curs.

Produsele Oracle conţin:

Oracle Text Retrieval

O tehnologie care adaugă capabilităţi de refacere completă a textului într-o bază de

date Oracle.

Pro*Oracle

O serie de precomilatoare care permit accesul bazelor de date Oracle la limbajele de

programare C, Cobol, Fortran , PL/1, Pascal şi Ada.

Oracle Card

O interfaţă utilizator pentru producerea aplicaţiilor cu baze de date uşor de folosit ce

incorporează grafice şi facilităţi multimedia.

Oracle CASE

O familie de instrumente care ajută la analiza, designul şi generarea aplicaţiilor

Oracle.

SQL*Plus

Un instrument care permite o utilizare directă şi interactivă a limbajului SQL pentru a

accesa serverul Oracle, utilizând comenzi ad-hoc sau prin rularea fişierelor de comandă.

Page 4: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

4

SQL, SQL*PLUS şi PL/SQL

*SQL

este limbajul utilizat pentru a accesa o bază de date relaţională, inclusiv Oracle.

poate fi utilizat de fiecare instrument Oracle, când accesul la baza de date este

necesar.

*PL/SQL

este limbajul Procedural al lui Oracle pentru scrierea aplicaţiilor şi pentru

manipularea datelor în afara bazei de date;

poate include un subset al comenzilor SQL, când accesul la baza de date este cerut;

este accesibil în fiecare din produsele CDE. De asemenea în însuşi serverul Oracle

(dacă opţiunea procedurală este instalată).

*SQL*Plus

este un produs Oracle în care limbajele SQL şi PL/SQL pot fi utilizate;

de asemenea are propriul limbaj de comandă pentru controlul comportării

produsului şi pentru formatarea rezultatelor interogărilor SQL.

În concluzie, SQL şi PL/SQL sunt limbaje care sunt utilizate într-un număr de produse

Oracle.

Page 5: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

5

2. DESCRIEREA APLICAŢIEI

Această aplicaţie realizează evidenţa unei farmacii şi este realizată cu ajutorul Oracle

Application Expres.

Din punct de vedere compoziţional, aplicaţia este organizată în cinci secţiuni care pot

fi vizitate prin accesarea meniurilor corespunzatoare. Aceste secţiuni sunt: Home,

Medicamente, Furnizori, Achiziţii/Desfacere, Situaţii.

Atunci când este accesat unul dintre meniuri, intrăm în secţiunea asociată acestuia.

La accesarea meniului Home, intrăm în prima pagină a aplicaţiei, pagina de start.

Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator.

La accesarea meniului Medicamente se face intrarea in pagina ce contine lista

operatiilor ce pot fi efectuate asupra tabelei Medicamente.

Operatiile care se pot efectua asupra tabelei Medicamente sunt:

- adaugare informatii medicamente

- modificare informatii medicamente

- stergere informatii medicamente

Page 6: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

6

Prin apasarea butonului Adaugare informatii medicamente ajungem in pagina prin

care se poate realiza adaugarea de informatii in tabela medicamente.

In cazul in care optiunea aleasa este Salvare, dupa adaugarea in baza de date, se

realizeaza redirectionarea catre pagina anterioara pentru a putea vizualiza rezultatul adaugarii.

In cazul in care utilizatorul se hotaraste sa renunte la adaugarea de informatii, acesta

poate prin simpla apasare a butonului Renuntare sa se intoarca in pagina principala a

meniului Medicamente.

Prin apasarea butonului Modificare informatii medicamente ajungem in pagina cu

informatiile despre medicamentele aflate pe stoc, în vederea selectării medicamentului ale

cărui informaţii vor fi modificate.

Utilizatorul poate aranja datele in ordine crescatoare sau descrescatoare dupa: Cod

bara, Denumire, Categorie, Pret de vanzare, le poate filtra si poate alege cate randuri sa

apara pe pagina iar in coltul din dreapta, butonul Resetare filtru reseteaza filtrele la forma

initiala.

Page 7: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

7

Dupa alegerea medicamentului ale carui informatii vor fi modificate, ajungem in

pagina unde putem modifica campurile despre medicament: Cod bare, Denumire, Unitate

de masura, Categorie, Pret de vanzare, Compensabil.

Butonul Salvare va memora modificarile facute iar cel de Renuntare ne intoarce la

pagina anterioara.

Pagina Stergere informatii medicament ne ajuta sa stergem informatiile despre un

medicament din tabela.

Avem si aici de asemenea optiunile de a aranja sau filtra datele.

Page 8: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

8

Dupa ce am ales o masina pe care dorim sa o stergem,ne sunt afisate detaliile acesteia

si trebuie sa confirmam prin apasarea butonului Stergere sau Renuntare in cazul in care

dorim sa renuntam la proces intorcandu-ne la pagina anterioara.

La accesarea meniului Furnizori se face intrarea in pagina ce contine lista operatiilor

ce pot fi efectuate asupra tabelei Furnizori.

Operatiile care se pot efectua asupra tabelei Furnizori sunt:

- adaugare informatii furnizori

Page 9: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

9

- modificare informatii furnizori

Page 10: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

10

- stergere informatii furnizori

Page 11: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

11

La accesarea meniului Achizitie/Desfacere se face intrarea in pagina ce contine lista

operatiilor ce pot fi efectuate asupra tabelei Facturi, Lista_fact si Bonuri, Lista_bon.

Operatiile care se pot efectua asupra tabelei Operati sunt:

- adaugare informatii achizitii

- adaugare informatii desfacere

Prin apasarea butonului Adaugare informatii achizitii se deschide pagina in care se

selecteaza furnizorul, dupa care se introduc informatiile despre factura : Numar si Data

facturii.

Page 12: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

12

Aceste date vor fi salvate in tabela FACTURI, urmand ca datele despre produsele

aflate pe factura (produsul, cantitatea si pretul de intrare) sa fie memorate in tabela

LISTA_FACT.

Page 13: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

13

Dupa selectarea unui produs se poate inchide factura sau se poate adauga un nou

produs pe factura.

Prin apasarea butonului Adaugare informatii desfacere ajungem la pagina cu produsele

aflate pe stoc ce pot fi vandute. In primul ecran utilizatorul selecteaza datele despre bonul de

vanzare : numar bon, data bon, numar reteta. Aceste date sunt memorate in table

LISTA_BON.

Page 14: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

14

In ecranul urmator sunt introduse datele despre produsul vandut : denumire,

cantitate, pret de vanzare.

Page 15: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

15

In continuare bonul poate fi inchis sau se poate repeta operatia de adaugare a unui nou

produs pe bonul de vanzare.

La accesarea meniului Situatii se face intrarea in pagina ce contine lista situatiilor de

iesire.

Page 16: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

16

Exista urmatoarele Situatii de iesire:

- Stoc produse

- Lista produselor cumparate intr-o luna

- Lista produselor vandute intr-o luna

- Lista facturilor de cumparare intr-o luna

- Lista facturilor de vanzare intr-o luna

Prin apasarea butonului Stoc produse sunt afisate produsele aflate pe stoc, cat si stocul

existent la momentul respectiv. Stocul produselor se calculeaza adaugand la stocul initial al

fiecarui produs cantitatea intrata si scazand cantitatea vanduta.

Se poate realiza sortarea si filtrarea datelor din tabel precum si exportul acestora intr-

un fisier excel.

Page 17: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

17

Prin apasarea butonului Lista produselor cumparate intr-o luna este selectata luna si

anul despre care dorim informatii, dupa care sunt afisate informatiile despre produsele

cumparate in acea luna. Utilizatorul poate filtra si sorta datele dupa categorie, cod bara,

denumire, pret de intrare, cantitate si poate alege cate randuri ce vor fi afisate. De

asemenea datele pot fi exportate intr-un fisier excel.

Page 18: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

18

Prin apasarea butonului Lista produselor vandute intr-o luna este selectata luna si anul

despre care dorim informatii, dupa care sunt afisate informatiile despre produsele vandute in

acea luna. Utilizatorul poate filtra si sorta datele dupa categorie, cod bara, denumire, pret

de intrare, cantitate si poate alege cate numarul de randuri ce vor fi afisate. De asemenea

datele pot fi exportate intr-un fisier excel.

Page 19: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

19

Prin apasarea butonului Facturi cumparare intr-o luna este selectata luna si anul despre

care dorim informatii, dupa care sunt afisate informatiile despre documentele de cumparare in

acea luna : numar document, data document, valoare. Utilizatorul poate filtra si sorta

datele dupa numar document, data document, valoare si poate alege cate randuri vor fi

afisate. De asemenea datele pot fi exportate intr-un fisier excel.

Page 20: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

20

Prin apasarea butonului Bonuri de vanzare intr-o luna este selectata luna si anul despre

care dorim informatii, dupa care sunt afisate informatiile despre documentele de vanzare in

acea luna : numar document, data document, valoare. Utilizatorul poate filtra si sorta

datele dupa numar document, data document, valoare si poate alege cate randuri vor fi

afisate. De asemenea datele pot fi exportate intr-un fisier excel.

Page 21: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

21

Page 22: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

FURNIZOR

# idfurnizor

* cui

* denumire

* adr

* localitate

o tel

o email

BON

# idbon

* numar

* data

o reteta

LISTA_BON

# idlstbon

* cantitate

* pret_vanzare

MEDICAMENTE

# idmedicament

* cod_bara

* denumire

* um

* categorie

* pret_vanzare

* compensabil

o stoc_initial

FACTURA

# idfactura

* numar

* data

LISTA_FACT

#idlstfact

* cantitate

* pret_intrare

3. MODELUL CONCEPTUAL

Page 23: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

4. MAPAREA MODELULUI CONCEPTUAL

În urma mapării modelului conceptual prezentat anterior au fost create următoarele tabele :

MEDICAMENTE

FURNIZORI

Page 24: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

24

FACTURI

LISTA_FACT

BONURI

Page 25: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

25

LISTA_BON

Page 26: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

26

5. COD SQL

TABELA FURNIZORI

-CREARE TABELA-

create table furnizori (

idfurnizor NUMBER(5) PRIMARY KEY,

cui VARCHAR2(13) NOT NULL UNIQUE,

denumire VARCHAR(30) NOT NULL,

adr VARCHAR(40) NOT NULL,

localitate VARCHAR2(30) NOT NULL,

tel VARCHAR(13),

email VARCHAR(20)

)

-INSERARE INFORMATII TABELA-

insert into furnizori (idfurnizor, cui, denumire, adr, localitate, tel, email)

values (1,'R1223312','S.C. ALFA S.R.L.','B-DUL IULIU MANIU, NR.128', 'BUCURESTI',

'021466887', '[email protected]')

insert into furnizori (idfurnizor, cui, denumire, adr, localitate, tel, email)

values (2,'R1489412','S.C. BETA S.R.L.','B-DUL IULIU MANIU, NR.1', 'BUCURESTI',

'021412347', '[email protected]')

insert into furnizori (idfurnizor, cui, denumire, adr, localitate, tel, email)

values (3,'R98765432','S.C. ATIBIOTICE S.A.','B-DUL SUCEVEI, NR.1','IASI', '0344444444',

'[email protected]')

-CREARE SECVENTA PENTRU GENERARE CHEIE PRIMARA-

CREATE SEQUENCE furnizori_seq start with 4 increment by 1

-CREARE VIZUALIZARE LISTA FURNIZORI-

create or replace view v_furnizor_gest as(

select denumire||' - '||cui as FURNIZOR, idfurnizor

from furnizori cit

)

TABELA MEDICAMENTE

-CREARE TABELA-

create table medicamente(

idmedicament NUMBER(5) PRIMARY KEY,

cod_bara VARCHAR2(13) NOT NULL UNIQUE,

denumire VARCHAR2(30) NOT NULL,

um CHAR(3) NOT NULL,

categorie VARCHAR(30) NOT NULL,

pret_vanzare NUMBER(7,2) NOT NULL,

compensabil CHAR(1) DEFAULT 'N' NOT NULL,

stoc_initial NUMBER(7,2));

-INSERARE INFORMATII TABELA-

insert into medicamente (idmedicament, cod_bara, denumire, um, categorie, pret_vanzare,

compensabil, stoc_initial) values (1,'9876512435127', 'ALGOCALMIN', 'CUT', 'ANALGEZIC',

9.5, 'N', 200)

insert into medicamente (idmedicament, cod_bara, denumire, um, categorie, pret_vanzare,

compensabil, stoc_initial) values (2, '9876527415127', 'PARACETAMOL', 'CUT',

'ANTIINFLAMATOR', 8.5, 'N', 150)

Page 27: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

27

insert into medicamente (idmedicament, cod_bara, denumire, um, categorie, pret_vanzare,

compensabil, stoc_initial) values (3, '987109215127', 'TETRACICLINA', 'CUT', 'ANTIBIOTIC',

12, 'D', 0)

-CREARE SECVENTA PENTRU GENERARE CHEIE PRIMARA-

CREATE SEQUENCE medicamente_seq start with 4 increment by 1

-CREARE VIZUALIZARE LISTA MEDICAMENTE-

create or replace view v_medicamente_gst as(

select denumire||' - '||cod_bara as DENUMIRE, idmedicament

from medicamente med

)

-CREARE VIZUALIZARE LISTA STOC MEDICAMENTE (FARA STOC ZERO)-

create or replace view v_medicamente_gest as(select (denumire||' ('||um||') -'||compensabil) as

DENUMIRE, sum(stoc) as STOC, idmedicament FROM

(select idmedicament, denumire, um, compensabil, med.stoc_initial as stoc

from medicamente med

UNION

select idmedicament, denumire, um, compensabil,((select sum(lsf.cantitate) from lista_fact lsf

where lsf.idmedicament=med.idmedicament)) as stoc

from medicamente med group by idmedicament, denumire,um, compensabil

UNION

select idmedicament, denumire, um, compensabil,((select (-1)*sum(lsb.cantitate) from lista_bon lsb

where lsb.idmedicament=med.idmedicament)) as stoc

from medicamente med group by idmedicament, denumire,um, compensabil)

GROUP BY idmedicament, denumire, um, compensabil

HAVING sum(stoc)>0

)

-CREARE VIZUALIZARE LISTA STOC MEDICAMENTE (INCLUSIV STOC ZERO)-

create or replace view v_medicamente as(select (denumire||' ('||um||') -'||compensabil) as

DENUMIRE, sum(stoc) as STOC, idmedicament FROM

(select idmedicament, denumire, um, compensabil, med.stoc_initial as stoc

from medicamente med

UNION

select idmedicament, denumire, um, compensabil,((select sum(lsf.cantitate) from lista_fact lsf

where lsf.idmedicament=med.idmedicament)) as stoc

from medicamente med group by idmedicament, denumire,um, compensabil

UNION

select idmedicament, denumire, um, compensabil,((select (-1)*sum(lsb.cantitate) from lista_bon lsb

where lsb.idmedicament=med.idmedicament)) as stoc

from medicamente med group by idmedicament, denumire,um, compensabil)

GROUP BY idmedicament, denumire, um, compensabil

)

TABELA FACTURA

-CREARE TABELA-

create table facturi (

idfactura NUMBER(5) PRIMARY KEY,

Page 28: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

28

idfurnizor NUMBER(5) NOT NULL REFERENCES furnizori(idfurnizor),

numar VARCHAR2(10) NOT NULL,

data DATE DEFAULT SYSDATE NOT NULL

)

-INSERARE INFORMATII TABELA-

insert into facturi (idfactura,idfurnizor,numar,data) values (1,1,'12345','01-FEB-2013');

insert into facturi (idfactura,idfurnizor,numar,data) values (2,1,'54321','02-FEB-2013');

-CREARE SECVENTA PENTRU GENERARE CHEIE PRIMARA-

CREATE SEQUENCE facturi_seq start with 3 increment by 1

TABELA LISTA_FACT

-INSERARE INFORMATII TABELA-

create table lista_fact (

idlstfact NUMBER(10) PRIMARY KEY,

idfactura NUMBER(5) NOT NULL REFERENCES facturi(idfactura),

idmedicament NUMBER(5) NOT NULL REFERENCES medicamente (idmedicament),

cantitate NUMBER(3) NOT NULL,

pret_intrare NUMBER(7,2) NOT NULL

)

-INSERARE INFORMATII TABELA-

insert into lista_fact (idlstfact,idfactura,idmedicament,cantitate,pret_intrare) values (1,1,1,10,8.5)

insert into lista_fact (idlstfact,idfactura,idmedicament,cantitate,pret_intrare) values (2,1,2,10,7.5)

insert into lista_fact (idlstfact,idfactura,idmedicament,cantitate,pret_intrare) values (3,1,3,5,11)

insert into lista_fact (idlstfact,idfactura,idmedicament,cantitate,pret_intrare) values (4,1,4,5,9)

insert into lista_fact (idlstfact,idfactura,idmedicament,cantitate,pret_intrare) values (6,2,1,10,8.5)

-CREARE SECVENTA PENTRU GENERARE CHEIE PRIMARA-

CREATE SEQUENCE lista_fact_seq start with 7 increment by 1

TABELA BONURI

-CREARE TABELA-

create table bonuri (

idbon NUMBER(5) PRIMARY KEY,

numar VARCHAR2(10) NOT NULL,

data DATE DEFAULT SYSDATE NOT NULL,

valoare NUMBER(15,2),

reteta VARCHAR2(5)

)

-INSERARE INFORMATII TABELA-

insert into bonuri (idbon,numar,data,valoare,reteta) values (1,'123456','15-FEB-2013',18,'123')

-CREARE SECVENTA PENTRU GENERARE CHEIE PRIMARA-

CREATE SEQUENCE bonuri_seq start with 2 increment by 1

TABELA LISTA_BON

-CREARE TABELA-

Page 29: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

29

create table lista_bon (

idlstbon NUMBER(10) PRIMARY KEY,

idbon NUMBER(5) NOT NULL REFERENCES bonuri(idbon),

idmedicament NUMBER(5) NOT NULL REFERENCES medicamente(idmedicament),

cantitate NUMBER(3) NOT NULL,

pret_vanzare NUMBER(7,2) NOT NULL

)

-INSERARE INFORMATII TABELA-

insert into lista_bon (idlstbon,idbon,idmedicament,cantitate,pret_vanzare) values (1,1,1,1,9.5)

insert into lista_bon (idlstbon,idbon,idmedicament,cantitate,pret_vanzare) values (2,1,2,1,8.5)

-CREARE SECVENTA PENTRU GENERARE CHEIE PRIMARA-

CREATE SEQUENCE lista_bon_seq start with 3 increment by 1

SITUATII DE IESIRE

STOC PRODUSE

select idmedicament, categorie, cod_bara, denumire, um, pret_vanzare, compensabil, sum(stoc) as

STOC

from (

select idmedicament, categorie, cod_bara, denumire, um, pret_vanzare, compensabil,

med.stoc_initial as stoc

from medicamente med

UNION

select idmedicament, categorie, cod_bara, denumire, um, pret_vanzare, compensabil,(select

sum(lsf.cantitate) from lista_fact lsf where lsf.idmedicament=med.idmedicament) as stoc

from medicamente med

UNION

select idmedicament, categorie, cod_bara, denumire, um, pret_vanzare, compensabil,(select (-1) *

sum(lsb.cantitate) from lista_bon lsb where lsb.idmedicament=med.idmedicament) as stoc

from medicamente med

)

group by idmedicament, categorie, cod_bara, denumire, um, pret_vanzare, compensabil

LISTA PRODUSE CUMPARATE INTR-O LUNA

select lsf.idmedicament, med.categorie, med.cod_bara, med.denumire, med.um,

med.compensabil,lsf.pret_intrare, sum(lsf.cantitate) as CANTITATE,

lsf.pret_intrare*sum(lsf.cantitate) as VALOARE

from lista_fact lsf, medicamente med, facturi fact

where (lsf.idmedicament=med.idmedicament) and (lsf.idfactura=fact.idfactura) and

TO_NUMBER(TO_CHAR(fact.data,'MM')) =

TO_NUMBER(TO_CHAR(TO_DATE(:P17_LUNA,'DD.MM.YYYY'),'MM')) and

TO_NUMBER(TO_CHAR(fact.data,'YYYY')) =

TO_NUMBER(TO_CHAR(TO_DATE(:P17_LUNA,'DD.MM.YYYY'),'YYYY'))

group by lsf.idmedicament, med.categorie, med.cod_bara, med.denumire, med.um,

med.compensabil, lsf.pret_intrare

LISTA PRODUSE VANDUTE INTR-O LUNA

select lsb.idmedicament, med.categorie, med.cod_bara, med.denumire, med.um, med.compensabil,

lsb.pret_vanzare, sum(lsb.cantitate) as CANTITATE

from lista_bon lsb, medicamente med, bonuri bon

Page 30: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

30

where (lsb.idmedicament=med.idmedicament) and (lsb.idbon=bon.idbon) and

TO_NUMBER(TO_CHAR(bon.data,'MM')) =

TO_NUMBER(TO_CHAR(TO_DATE(:P18_LUNA,'DD.MM.YYYY'),'MM')) and

TO_NUMBER(TO_CHAR(bon.data,'YYYY')) =

TO_NUMBER(TO_CHAR(TO_DATE(:P18_LUNA,'DD.MM.YYYY'),'YYYY'))

group by lsb.idmedicament, med.categorie, med.cod_bara, med.denumire, med.um,

med.compensabil, lsb.pret_vanzare

LISTA FACTURILOR DE CUMPARARE INTR-O LUNA

select fact.idfactura, fact.numar, fact.data, fur.denumire, fur.localitate, (select sum (lstf.cantitate *

lstf.pret_intrare) from lista_fact lstf where fact.idfactura=lstf.idfactura ) AS VALOARE

from facturi fact, furnizori fur

where (fact.idfurnizor=fur.idfurnizor) and TO_NUMBER(TO_CHAR(fact.data,'MM')) =

TO_NUMBER(TO_CHAR(TO_DATE(:P19_LUNA,'DD.MM.YYYY'),'MM')) and

TO_NUMBER(TO_CHAR(fact.data,'YYYY')) =

TO_NUMBER(TO_CHAR(TO_DATE(:P19_LUNA,'DD.MM.YYYY'),'YYYY'))

LISTA BONURILOR DE VANZARE INTR-O LUNA

select bon.idbon, bon.numar, bon.data,

(select sum(lstb.cantitate*lstb.pret_vanzare) from lista_bon lstb where bon.idbon=lstb.idbon) AS

VALOARE

from bonuri bon

where TO_NUMBER(TO_CHAR(bon.data,'MM')) =

TO_NUMBER(TO_CHAR(TO_DATE(:P20_LUNA,'DD.MM.YYYY'),'MM')) and

TO_NUMBER(TO_CHAR(bon.data,'YYYY')) =

TO_NUMBER(TO_CHAR(TO_DATE(:P20_LUNA,'DD.MM.YYYY'),'YYYY'))

Page 31: TEMA : EVIDENTA UNEI FARMACII - ctimbg.wikispaces.comEvidenta+unei... · Aceasta conţine numele, autorul proiectului, cât şi profesorul coordonator. La accesarea meniului Medicamente

31

6. BIBLIOGRAFIE

1. Popescu, Carmen, ”Manual de informatică pentru clasa a XII-a”, Editura L&S Info-mat,

2007

2. Nume site : ORACLE ACADEMY

https://academy.oracle.com/pages/student_area.htm

Ce aţi găsit pe acest site : Curs online SQL si PL/SQL

3. Nume site : Building an Application using Oracle Application Express

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/devdays2012/apexp1_lab/apex

p1_lab.html

Ce aţi găsit pe acest site : Tutorial pentru realizarea aplicatiilor utilizând Application Express