1. Trang chủ
  2. » Công Nghệ Thông Tin

CODE ĐƠN HÀNG GIA CÔNG

41 245 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 41
Dung lượng 1,13 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ngày cập nhật sau cùng: Ngày 26 tháng 10 năm 2004 XYZ là một Công Ty hoạt động theo mô hình phục vụ, được mô tả như sau: Khách hàng ký các đơn đặt hàng để gia công các sản phẩm nào đó.Ng

Trang 1

ĐƠN HÀNG GIA CÔNG

 GIỚI THIỆU:

Thực hiện chương trình: Võ Hòa Đoàn

Ngày cập nhật sau cùng: Ngày 26 tháng 10 năm 2004

XYZ là một Công Ty hoạt động theo mô hình phục vụ, được mô tả như sau:

Khách hàng ký các đơn đặt hàng để gia công các sản phẩm nào đó.Nguyên liệu sẽ do khách hàng cung cấp để sản xuất và khi sản xuất xong thì Công ty sẽ giao sản phẩm được sản xuất cho khách hàng theo các đơn hàng đã ký Việc tính lượng tồn nguyên liệu tồn còn lại dựa theo định mức sản xuất là bao nhiêu, các nguyên liệu nào để cho ra 1 đơn vị sản phẩm

Quản lý việc thanh toán (tiền gia công), công nợ khách hàng vàquản lý tồn nguyên liệu mà công ty còn giữ của khách hàng sau khi đã trừ các nguyên liệu sản xuất và giao các sản phẩm

Chương trình được viết trên ngôn ngữ Visual Basic, kết nối với Cơ sở dữ liệu Access; cùng với 2 phần mềm Data Widgets để hiển thị dữ liệu lên lưới và Crystal Report 8.5 để lập báo cáo Chúng em đã được sự hướng dẫn tận tình của thầy Phạm Ngọc Linh cũng như ý kiến đóng góp

quý báo của các bạn Tuy nhiên thới gian và kinh nghiệm có hạn nên chương trìng không tránh khỏi thiếu sót, hạn chế Rất mong được sự góp ý của quý thầy cô và ý kiến của các bạn

 Chương trình kết nối trên Cơ sở dữ liệu Access.

Để kết nối với các hệ quản trị cơ sở dữ liệu bằng đối tượng ADO phải dùng chuỗi

chuổi kết nối ( SQLConn ) thông qua trình điều khiển Provider:

Trang 2

SQLConn = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source=

<”đường dẫn.Tên database”> Persist Security Info=False "

Đối tượng Connection:

Dùng để kết nối các hệ quản trị cơ sở dữ liệu, thực thi câc lệnhSQL(insert, update, delete) thông qua phương thức Execute

Có thể tạo đối tượng connection thông qua nhiều cách:

Dim Conn as new ADODB.ConnectionThực thi câu lệnh SQL

<Đối tượng connection”>.Execute <”Câu lệnh SQL”>

Ví dụ: Với câu lện SQL:

Str = " insert into GIAONHAN values('" & Trim(cboSoPhieu) & "','" &

Trim(cboSoDDH) & "','" & Trim(txtNgay) & "')"

Conn.Execute Str

Đối tượng Recordset :

Dùng để thực thi lấy mẫu tin từ cơ sở dữ liệu thông qua câu lệnh SQLSelect

Có thể tạo đối tượng Recordset bằng cách:

Dim Rst as new ADODB RecordsetCâu lệnh SQL:

strSQL = " select TenkhachHang From KhachHang "

1 Phiếu nhập nguyên liệu:

Nguyên liệu được Khách Hàng cung cấp sau khi Công ty và khách hàng thoả thuận việc gia công sản phẩm mà khách hàng yêu cầu

Trang 3

Nguyên liệu Số lượng ĐVT

Sản phẩm Số lượng Đơn giá

4 Phiếu thanh toán:

Trang 4

PHÂN TÍCH THÀNH PHẦN DỮ LIỆU CỦA ỨNG DỤNG:

1 Sơ đồ quan niệm dữ liệu:

Trang 5

Hình 1: Sơ đồ Quan niệm dữ liệu của ứng dụng ĐƠN HÀNG GIA CÔNG

ChiTietGiaoNhan Chi tiết giao nhận

NguyenLieu Nguyên liệu

NhapXuatNguyenLieu Nhập xuất nguyên liệu

ChiTietNguyenLieu Chi tiết nguyên liệu

Trang 6

b) Mô tả các loại thực thể:

b1) Thực thể Khách hàng:

MaKhachHang Mã khách hàng Text Khoá chínhTenKhachHang Tên khách hàng Text

b2) Thực thể đơn đặt hàng:

SoDonDatHang Số đơn đặt hàng Text Khoá chínhMaKhachHang Mã khách hàng Text Khoá ngoại

b3) Thực thể Chi tiết đơn đặt hàng:

SoDonDatHang Số đơn đặt hàng Text Khoá chính

SoLuongDatHang SL đặt hàng Number

b4) Thực thể Sản phẩm:

TenSanPham Tên sản phẩm Text

b5) Thực thể Định mức sản xuất:

NguyenLieu Nguyên liệu Text Khoá ngoại

SoLuongSanXuat Số lượng sản xuất Number

b6) Thực thể công nợ:

Trang 7

Thuộc tính Diễn giải Kiểu Ràng buộc

NgayCongNo Ngày công nợ Date() Khoá chínhMaKhachHang Mã khách hàng Text Khoá ngoạiTienCongNo Tiền công nợ Number

b7) Thực thể Giao Nhận:

SoDonDatHang Số đơn đặt hàng Text Khoá ngoại

b8) Thực thể Chi tiết giao nhận:

b9) Thực thể Nguyên Liệu:

NguyenLieu Nguyên liệu Text Khoá chínhTen NguyenLieu Tên nguyên liệu Text

b10) Thực thể Thanh Toán:

SoThanhToan Số thanh toán Text Khoá chínhNgayThanhToan Ngày thanh toán Date() Khoá ngoạiMaKhachHang Mã khách Hàng Text

TienThanhToan Tiền thanh toán Number

b11) Tthực thể Tồn:

MaKhachHang Mã khách hàng Text Khoá ngoạiNguyenLieu Nguyên liệu Text Khoá ngoạiSoLuongTon Số lượng tồn Number

b12) Thực thể Nhập xuất nguyên liệu:

Trang 8

Thuộc tính Diễn giải Kiểu Ràng buộc

SoHoaDonNhap Số hoá đơn nhập Text Khoá chính

MaKhachHang Mã khách hàng Text Khoá ngoại

b13) Thực thể Chi tiết nguyên liệu:

SoHoaDonNhap Số hoá đơn nhập Text Khoá ngoại

NguyenLieu Nguyên liệu Text Khoá ngoại

c) Ràng buộc toàn vẹn:

 KHOÁ CHÍNH:

R1-01: id(CongNo) = sttCNOR1-02: id(KhachHang) = MaKhachHangR1-03: id(DonDatHang) = SoDDHR1-04: id(ChiTietDonDathang) = sttDDHR1-05: id(SanPham) = SanPham

R1-06: id(DinhMucSanXuat) = sttSXR1-07: id(GiaoNhan) = SoPhieuR1-08: id(ChiTietGiaoNhan) = sttGiaoNhanR1-09: id(ThanhToan) = SoTT

R1-10: id(Ton) = sttTonR1-11: id(NhapXuatNguyenLieu) = SoHDNR1-12: id(ChiTietNguyenLieu) = sttHDNR1-13: id(NguyenLieu) = NguyenLieu

 RÀNG BUỘC MIỀN GÁI TRỊ:

R2-01: (CTDDH.SoDDH>0) and (CTDDH.SLDH>0) and (CTDDH.DG>0)R2-02: (SP.DVT> 0 ) and (SP.DG > 0)

R2-03: (DMSX.SLSX > 0)R2-04: (GN.NgGiao < DDH.NgKK)R2-05: (CTNL.SL > 0)

R2-06: (NL.DVT > 0)R2-07: (TT.TienTT > 0)

 RÀNG BUỘC GIỮA CÁC THUỘC TÍNH TRONG THỰC THỂ:

R3-0: CNOCK = CNODK + TIENNO - TIENTHU

R3-0: SLTonCK = SLTonDK + NHAP - XUAT

R3-0: Tiền đặt hàng = CTDDH.SLDH * CTDDH.DGR3-0: Tiền giao nhận = CTGN.SL * CTGN.DGR3-0: Số tiền nợ đầu kì ( CNODK ) của tháng này phải bằng số tiền nợ cuối kì( CNOCK ) của tháng trước

R3-0: Số lượng tồn đầu kì ( SLTonDK ) của tah1ng này phải bằng số lựơng tồn cuối kì ( SLTonCK ) của tháng trước

Trang 9

Qui tắc : Số lượng nhập trong tháng t của NL n bằng tổng số lượng của CTNL

trong tháng t có liên quan đến NL n

_Tên xử lý : XL3:

Chức năng : Cập nhật Đơn đặt hàng

Input : SDDH, MSP, DDH, CTDDH, KH, SP

Output : DDH

Qui tắc : Số lượng Sản phẩm Khách hàng đặt trong tháng t bằng tổng số sản

phẩm của CTDDH trong tháng t có liên quan đến sản phẩm đó

_Tên xử lý : XL4:

Chức năng : Cập nhật phiếu Giao nhận

Input : SoP p, SoDDH h, GN, CTGN, DDH, CTDDH

Output : GN

Qui tắc : Số lượng giao nhận sản phẩm trong tháng t bằng tổng số lượng giao

nhận của CTGN trong tháng t liên quan đến Sản phẩm đó

_Tên xử lý : XL5

Chức năng : Cập nhật phiếu thanh toán

Input : SoTT, MKH, TTOAN, KH

Output : TTOAN

Qui tắc : Số tiền thanh toán trong tháng t bằng tổng tiền thanh toán của TTOAN

trong tháng t có liên quan đến KH k

_Tên xử lý : XL6:

Chức năng : Tính nợ Khách hàng

Input : NgCN, MKH, CNO

Trang 10

Output : CNO.

Qui tắc: NOCK = NODK + SONO - THANHTOAN

_Tên xử lý : XL7 :Chức năng : Tính tồn Nguyên liệu :Input : NgTON, LN, TON

Output : TON

Qui tắc: TONCK = TONDK + NHAP - XUAT

III THIẾT KẾ DỮ LIỆU :

1 Sơ đồ Logic dữ liệu:

Hình 2: Sơ đồ Logic dữ liệu của ứng dụng ĐƠN HÀNG GIA CÔNG

2 Từ điển dữ liệu:

MaKhachHang Mã khách hàng

TenKhachHang Ten khách hàng

Trang 11

DienThoai Điện thoại

NgayCongNo Ngày công nợ

TienCongNo Tiền công nợ

NguyenLieu Nguyên liệu

TenNguyenLieu Tên Nguyên liệu

SoThanhToan Số thanh toán

NgayThanhToan Ngày thanh toán

TienThanhToan Tiền thanh toán

SoHoaDonNhap Số hoá đơn nhập

Trang 12

Thuộc tính Kiểu Khóa

 Khoá ngoại:

Khoá ngoại Bảng tham chiếu Khoá nội

MaKhachHang KhachHang MaKhachHang

 Khoá ngoại:

Khoá ngoại Bảng tham chiếu Khoá nội

3.4) Chi tiết Đơn đặt hàng

 Thuộc tính:

Trang 13

SanPham Text Ngoại

Khoá ngoại Bảng tham chiếu Khoá nội

3.6) Sản phẩm :

 Thuộc tính:

Trang 14

Khoá ngoại Bảng tham chiếu Khoá nội

Trang 15

Khoá ngoại Bảng tham chiếu Khoá nội

Trang 16

Khoá ngoại Bảng tham chiếu Khoá nội

3.12) Nhập xuất nguyên liệu :

Khoá ngoại Bảng tham chiếu Khoá nội

3.13) Chi tiết nguyên liệu :

 Thuộc tính:

 Chỉ mục:

Trang 17

Khoá ngoại Bảng tham chiếu Khoá nội

SoHoaDonNhap NXNguyenLieu SoPhieu

4 MÔ TẢ CÁC RÀNG BUỘC TOÀN VẸN :

4.1) KHÓA CHÍNH :

R1-01 : id( CONGNO ) = NgayCNR1-02 : id( KHACHANG ) = MKHR1-03 : id( NGUYENLIEU ) = NLR1-04 : id( DONDATHANG ) = SDDH, MAKHR1-05 : id( CHITIETDONDATHANG ) = SDDH, SPR1-06 : id( SANPHAM ) = SANPHAM

R1-07 : id( DINHMUCSANXUAT ) = NL, SPR1-08 : id( GIAONHAN ) = SPhieu, SDDHR1-09 : id( CHITIETGIAONHAN ) = SPhieu, SPR1-10 : id( THANHTOAN ) = SoTT, MKHR1-11 : id( TON ) = MKH, NL

R1-12 : id( NHAPXUATNGUYENLIEU ) = SoDDH, MKHR1-13 : id( CHITIETNGUYENLIEU ) = SoHDN, NL

4.2) RÀNG BUỘC VỀ MIỀN GIÁ TRỊ:

R2-01 : (CTDDH.SLDH > 0) and (CTDDH.DG > 0)R2-02 : (SP.DG > 0)

R2-03 : (DMSX.SLSX > 0)R2-04 : (CNO.TienCNO > 0)R2-05 : (CTGN.SL > 0) and (CTGN.DG > 0)R2-06 : (TToan.TToan > 0)

Trang 19

Menu Giao nhận Giao hàng cho Khách hàng.

Menu Nhập xuất Nguyên liệu Nhập nguyên liệu từ khách hàng

2 Màn hình Đặt hàng:

Hình 4: Màn hình Đơn đặt hàng mới Source code lấy Mã KH lên combobox:

Dim sqlMKH As String sqlMKH = "Select MaKhachHang from KhachHang order by MaKhachHang asc" Set rsMKH = New ADODB.Recordset

rsMKH.Open sqlMKH, Conn, adOpenKeyset, adLockOptimistic

strSQL = "SELECT ChiTietDonDatHang.SanPham, SanPham.TenSanPham, SanPham.DonViTinh, ChiTietDonDatHang.SoLuongDatHang,

ChiTietDonDatHang.DonGia"

strSQL = strSQL & " FROM SanPham, DonDatHang, ChiTietDonDatHang WHERE DonDatHang.SoDonDatHang = ChiTietDonDatHang.SoDonDatHang AND

SanPham.SanPham = ChiTietDonDatHang.SanPham"

Trang 20

Set Rst = New ADODB.Recordset

Rst.CursorLocation = adUseClient

Cnn.Open SQLConn ' KHÔNG DÙNG BIẾN Conn

Rst.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

: Nút Mới để thêm Đơn đặt hàng mới, khi nhấn nút Mới thì số DDH sẽ

tự tăng, ta có thể chọn Khách hàng cũ ở textbox MaKhachHang hoặc điền thông tin mới nếu là Khách hàng mới

Source code khi nhấn nút mới số DDH sẽ tự tăng:

Private Sub cmdmoi_Click() txtSDDH.SetFocus

Dim SQLddh As String SQLddh = "select sodondathang from dondathang "

Set rsDDH = New ADODB.Recordset rsDDH.CursorLocation = adUseClient rsDDH.Open SQLddh, Conn, 0, 3 SDDH = Mid(Trim(txtSDDH.Text), 2, 2) txtSDDH.Text = SDDH & "DDH" & rsDDH.RecordCount + 1 End Sub

: Khi nhấn nút lưu thì sẽ gọi màn hình Đặt hàng mới để nhập thêm thôngtin của sản phẩm mới:

: Lưu dữ liệu mới xuống cơ sở dữ liệu

Source code Lưu dữ liệu:

Private Sub cmdLuu_Click() Dim Rs As New ADODB.Recordset Dim rs1 As New ADODB.Recordset Dim SQL2 As String

Dim SQL3 As String Dim SQL4 As String Dim SQL5 As String

Trang 21

SQL2 = " insert into KHACHHANG values('" & Trim(frm1DatHang.cboMKH)

& "','" & Trim(frm1DatHang.txtTKH) & "','" & Trim(frm1DatHang.txtDiachi) & "','" &Trim(frm1DatHang.txtDienthoai) & "')"

SQL3 = " insert into DONDATHANG values(' " &

Trim(frm1DatHang.txtSDDH) & " ',' " & Trim(frm1DatHang.cboMKH) & " ',' " & Trim(frm1DatHang.txtNgayKK) & " ')"

SQL4 = " insert into CHITIETDONDATHANG values(' " &

Trim(frm1DatHang.txtSDDH) & " ',' " & Trim(cboSP) & " ',' " & Trim(txtSl) & " ',' " &Trim(txtDG) & " ',' " & Trim(frm1DatHang.txtHanGiao) & " ') "

Conn.Execute SQL2

Conn.Execute SQL3

Conn.Execute SQL4

SQL5 = " update DONDATHANG set MAKHCHHANG='" &

Trim(frm1DatHang.cboMKH) & "', TENKHACHHANG='" &

Trim(frm1DatHang.txtTKH) & "', NGAYKIKET='" &

Trim(frm1DatHang.txtNgayKK) & "',HANGIAO='" &

Trim(frm1DatHang.txtHanGiao) & "' WHERE SODONDATHANG='" &

Trim(frm1DatHang.txtSDDH) & "'"

SQL6 = " update KHACHHANG set MAKHACHHANG='" &

Trim(frm1DatHang.cboMKH) & "',TENKHACHHANG='" &

Trim(frm1DatHang.txtTKH) & ",DIACHI='" & Trim(frm1DatHang.txtDiachi) &

"',DIENTHOAI='" & Trim(frm1DatHang.txtDienthoai) & "'"

SQL7 = " update CHITIETDONDATHANG set SODONDATHANG='" & Trim(frm1DatHang.txtSDDH) & "',SANPHAM='" & Trim(cboSP) &

"',SOLUONGDATHANG='" & Trim(txtSl) & "',DONGIA='" & Trim(txtDG) &

"',HANGIAO='" & Trim(frm1DatHang.txtHanGiao) & "'"

Trang 22

Hình 5: Màn hình giao nhận sản phẩm cho khách hàng.

Source code lấy dữ liệu lên cbo số phiếu:

Dim sql As String

sql = "select sophieu from giaoNhan "

Set rsSoP = New ADODB.Recordset

rsSoP.Open sql, Conn, adOpenKeyset, adLockOptimistic Set cboSoPhieu.DataSourceList = rsSoP

cboSoPhieu.DataFieldList = "SoPhieu"

cboSoPhieu.Columns(0).Width = 1200

Source code lấy dữ liệu lên cbo số ĐĐH :

1 Dim sql1 As String

sql1 = "select sodondathang from dondathang"

Set rsSoDDH = New ADODB.Recordset

rsSoDDH.Open sql1, Conn, adOpenKeyset, adLockOptimistic Set cboSoDDH.DataSourceList = rsSoDDH

Trang 23

strSQL = "select * from SanPham"

Set Rst = New ADODB.Recordset Rst.CursorLocation = adUseClient 'Conn.Open SQLConn

Cnn.Open SQLConn ' KHÔNG DÙNG BIẾN Conn Rst.Open strSQL, Conn, adOpenKeyset, adLockOptimistic SSOGiaoNhan.Columns(0).DataField = "sanpham"

: Lưu dữ liệu mới xuống cơ sở dữ liệu

Source code Lưu Dữ liệu:

Private Sub CmdLuu_Click () Dim Str As String

Dim Str1 As String Dim Str2 As String Dim Str3 As String

If Trim(cboSoPhieu) = "" Or Trim(cboSoDDH) = "" Then MsgBox " Xin nhap soPHIEU va soDDH truoc khi luu ", vbOKOnly + vbExclamation, "THONG BAO"

Me.MousePointer = 0 End If

Str = " insert into GIAONHAN values('" & Trim(cboSoPhieu) & "','" &

Trim(cboSoDDH) & "','" & Trim(txtNgay) & "')"

Conn.Execute Str Str1 = " update GIAONHAN set SOPHIEU='" & Trim(cboSoPhieu) &

"',SODONDATHANG='" & Trim(cboSoDDH) & "',NGAYGIAO='" & Trim(txtNgay)

& "'"

Conn.Execute Str1 Str2 = " insert into CHITIETGIAONHAN values('" & Trim(cboSoPhieu) & "','" & Trim(SSOGiaoNhan.Columns(0).Text) & "','" &

Trim(SSOGiaoNhan.Columns(2).Text) & "','" &

Trim(SSOGiaoNhan.Columns(3).Text) & "' ) Conn.Execute Str2

Str3 = " update CHITIETGIAONHAN set SOPHIEU='" & Trim(cboSoPhieu) & "', SANPHAM='" & Trim(SSOGiaoNhan.Columns(0).Text) & "', SOLUONG='" & Trim(SSOGiaoNhan.Columns(2).Text) & "',DONGIA='" &

Trim(SSOGiaoNhan.Columns(3).Text) & "' "

Conn.Execute Str3

Trang 24

End Sub

: thoát cửa sổ Giao nhận

4 Màn hình Nhập xuất Nguyên liệu:

Hình 6: Màn hình nhập xuất nguyên liệu.

Source code lấy dữ liệu lên cbo MAKH:

Dim Cnn As New ADODB.Connection

strSQL = "select * from NGUYENLIEU"

Set Rst = New ADODB.Recordset

Trang 25

: Lưu dữ liệu mới xuống cơ sở dữ liệu.

: Thoát màn hình Nhập xuất nguyên liệu

Tra cứu :

Menu Khách hàng: Hiển thị Khách hàng và nhập Khách hàng mới

Menu Nguyên liệu: Hiển thị danh sách nguyên kiệu và Nhập nguyên liệu

Trang 26

Hình 7: Màn hình tra cứu, nhập mới khách hàng.

Source code lấy Mã KH lên combobox:

Dim sqlMKH As String sqlMKH = "Select MaKhachHang from KhachHang order by MaKhachHang asc" Set rsMKH = New ADODB.Recordset

rsMKH.Open sqlMKH, Conn, adOpenKeyset, adLockOptimistic

Dim Cnn As New ADODB.Connection

strSQL = "select * FROM khachhang"

Set Rst = New ADODB.Recordset

Ngày đăng: 20/12/2014, 10:04

HÌNH ẢNH LIÊN QUAN

1. Sơ đồ quan niệm dữ liệu: - CODE ĐƠN HÀNG GIA CÔNG
1. Sơ đồ quan niệm dữ liệu: (Trang 4)
Hình 1: Sơ đồ Quan niệm dữ liệu của ứng dụng ĐƠN HÀNG GIA CÔNG 2. Mô tả dữ liệu: - CODE ĐƠN HÀNG GIA CÔNG
Hình 1 Sơ đồ Quan niệm dữ liệu của ứng dụng ĐƠN HÀNG GIA CÔNG 2. Mô tả dữ liệu: (Trang 5)
Hình 4: Màn hình Đơn đặt hàng mới . Source code lấy Mã KH lên combobox: - CODE ĐƠN HÀNG GIA CÔNG
Hình 4 Màn hình Đơn đặt hàng mới . Source code lấy Mã KH lên combobox: (Trang 19)
Hình 5: Màn hình giao nhận sản phẩm cho khách hàng. - CODE ĐƠN HÀNG GIA CÔNG
Hình 5 Màn hình giao nhận sản phẩm cho khách hàng (Trang 22)
Hình 6: Màn hình nhập xuất nguyên liệu. - CODE ĐƠN HÀNG GIA CÔNG
Hình 6 Màn hình nhập xuất nguyên liệu (Trang 24)
Hình 7: Màn hình tra cứu, nhập mới khách hàng. - CODE ĐƠN HÀNG GIA CÔNG
Hình 7 Màn hình tra cứu, nhập mới khách hàng (Trang 26)
Hình 8: Màn hình tra cứu, nhập nguyên liệu. - CODE ĐƠN HÀNG GIA CÔNG
Hình 8 Màn hình tra cứu, nhập nguyên liệu (Trang 28)
Hình 9: Màn hình tra cứu, nhập sản phẩm. - CODE ĐƠN HÀNG GIA CÔNG
Hình 9 Màn hình tra cứu, nhập sản phẩm (Trang 29)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w