Thành phần Invoice (Hóa đơn)

Một phần của tài liệu (Luận văn thạc sĩ) mô hình hóa giao diện của các thành phần trong các hệ thống dựa trên thành phần (Trang 40 - 43)

Thành phần Invoice được dùng để thể hiện các hóa đơn bán hàng, sau đây là chi

tiết các thuộc tính của Invoice.

Thành phần Invoice sử dụng 2 thành phần Client và Product (vì nó cần truy cập

vào một số biến của hai thành phần này).

Tập Dep = { Invoice_System} chứa tên thành phần là Invoice_SystemInvoice

phụ thuộc vào.

Rd - Sử dụng 2 tập

(1) Tập INVOICE là một tập biểu thị tất cả các hóa đơn có thể (hiện tại và tương lai).

(2) Tập LINE là một tập biểu thị tất cả các dòng có thể.

Md - Tập hợp các phương thức của thành phần Invoice

{ create_invoice_header(c), new_line(i, p), the_line(i,p), increment(l, q), remove_all_lines(i), remove_invoice_header(i) }

Tập Fd chứa các biến của thành phần là

invoice, customer, percentage, allowed, total, line, origin, article, quantity, unit_cost

Vị từ Inv về các thuộc tính trong hợp đồng

invoice ⊆ INVOICE ∧ customer ∈ invoice → client ∧

percentage ∈ invoice → (0..100) ∧ allowed ∈ invoice → N AT ∧ total ∈ invoice → N AT ∧ ran(total ⊗ allowed) ⊆ leq ∧

line ⊆ LINE ∧ origin ∈ line → invoice ∧ article ∈ line → product ∧ quantity ∈ line → NAT ∧ unit_cost ∈ line → NAT ∧

origin ⊗ article ∈ line ⊳ invoice × product

Tạo một hóa đơn (Invoice)

Chức năng này được thiết kế để tạo một hóa đơn cho một khách hàng hợp lệ (R4).

inv ← create_invoice_header(c) =ˆ

Với tiền điều kiện

c ∈ client ∧ category(c) = dubious ∧ invoice = I NVOICE ∧ 0 < ≤ 300

Thì

Với ∀ j sao cho j INVOICE − invoice

Thì ta có

invoice := invoice ∪ {j }∥customer(j ) := c ∥ percentage(j ) := discount(category(c))∥

allowed(j ) := allowance(c) ∥ inv := j

Thêm một dòng vào hoán đơn

Chức năng này làm nhiệm vụ thêm 1 dòng vào hóa đơn khi sản đó chưa có trên

hóa đơn. (adsbygoogle = window.adsbygoogle || []).push({});

l ← new_line(i, p) =ˆ

Với tiền điều kiện

i ∈ invoice ∧ p ∈ product ∧ status(p) = available ∧ (i, p) ∉ ran(origin ⊗ article) ∧ line = LI N E

Thì

Với m sao cho m LI N E − line

Thì ta có

l := m ∥ line := line ∪ {m}∥ origin(m) := i ∥ article(m) := p ∥

quantity(m) := 0 ∥ unit_cost(m) := price(p)

Lấy một dòng

Chức năng này là để lấy 1 dòng của một sản phẩm đã có sẵn mà nó đã xuất hiện tại

một dòng nào đó của hóa đơn.

l ← the_line(i,p) =ˆ

Với tiền điều kiện

i ∈ invoice ∧ p ∈ product ∧

status(p) = available ∧ (i,p) ∈ ran(origin ⊗ article)

42

l := (origin ⊗ article)-1 (i, p)

Tăng thêm trên 1 dòng

Chức năng này thực hiện nhiệm vụ tăng số lượng của sản phẩm trên một dòng, nó

tương ứng với trường hợp sản đã có dòng chứa sản phẩm đó trong hóa đơn. Trong trường hợp này thông tin về số lượng sẽ tăng lên tương ứng.

increment(l, q) =ˆ

Với tiền điều kiện

l ∈ line ∧ q ∈ NAT ∧

status(article(l)) = available ∧ quantity(l) + q ∈ N AT ∧

total(origin(l)) + (q × unit_cost(l) × percentage(origin(l))/100) ≤ allowed(origin(l)))

Thì

quantity(l) := quantity(l) + q ∥

total(origin(l)) := total(origin(l))+

(q × unit_cost(l) × percentage(origin(l))/100)

Xóa tất cả các dòng trên hóa đơn (adsbygoogle = window.adsbygoogle || []).push({});

remove_all_lines(i) =ˆ

Với tiền điều kiện

i ∈ invoice

Thì

line := line - origin-1[{i}] ∥

origin := (origin-1 [{i}] ⊲ origin) ∥

article := (origin-1 [{i}] ⊲ article) ∥

quantity := (origin-1 [{i}] ⊲ quantity) ∥

unit_cost := (origin-1 [{i}] ⊲ unit_cost)

Trong đó với hàm f và tập Sta định nghĩa

dom(S ⊲ f ) =ˆ dom(f ) – S

(S ⊲ f )(x) =ˆ f (x)

Xóa một hóa đơn

Chức năng remove_invoice_header() được dung để xóa phần header của một hoán

đơn.

remove_invoice_header(i) =ˆ

Với tiền điều kiện

i ∈ invoice ∧ i ∉ ran(origin)

Thì

customer := {i} ⊲ customer ∥

percentage := {i}⊲ percentage ∥

allowed := {i}⊲ allowed ∥

total := {i}⊲ total

Hóa đơn có thể bị xóa sau khi xóa tất cả các dòng bằng chức năng

remove_all_lines(), tức là i ∉ ran(origin).

Một phần của tài liệu (Luận văn thạc sĩ) mô hình hóa giao diện của các thành phần trong các hệ thống dựa trên thành phần (Trang 40 - 43)