Translate

Thứ Tư, 7 tháng 4, 2021

09. Nâng cấp đơn hàng

 Bài 09: Nâng cấp đơn hàng


Nội dung

  • Tạo mới đơn hàng từ Navigation 
  • Disable DetailView cho danh sách hàng
  • Không cho sửa khi đơn hàng đã giao, hoặc hủy
Video tham khảo

1. Tạo mới đơn hàng từ Navigation

 Bình thường, khi cần tạo đơn hàng mới, bạn phải vào navigation item SalesOrder_ListView, rồi bấm nút tạo mới, sẽ mất nhiều thời gian.
Để tiện hơn cho khách hàng, chỉ cần bấm Nút tạo mới từ bên ngoài như hình bên dưới:
Để làm được việc này, bạn cần làm những bước sau:
  1. Trong dự án App.Module, mở model designer
  2. Add new NavigationItem, trường View chọn SalesOrder_DetailView,
  3. Trường ObjectKey bạn gõ vào chuỗi @New.


Thế là xong, chạy lại phần mềm bạn sẽ thấy kết quả giống như hình trên

2. Disable DetailView cho danh sách hàng

Bối cảnh, khi vào trong đơn hàng, bấm nhầm vào một dòng hàn hóa, nó sẽ mở lên detailview, rất là vướng víu. Inline Edit (chỉnh sửa trong listview) cũng đã đáp ứng  được việc này rồi.

Để tắt tính năng đó các bạn chỉ cần thêm đoạn code sau vào file App.Module.cs



protected override void Register(DisableDetailViewService service)
        {
            base.Register(service);
            //Chỉ disable Nested list view thôi
            service.Register<OrderItem>(Nesting.Nested);
        }

3. Không cho sửa khi đơn hàng đã giao, hoặc hủy

Trong thế giới thực, khi đã giao hàng hoặc hủy hàng thì chúng ta không cho chỉnh sửa gì trên đó. 
Để làm được việc ngày chúng ta định nghĩa property AllowEdit và thêm thuộc tính DisableProperties như bên dưới


 [DisableProperties("NotAllowEditSalesOrder",TargetItems ="*;Note",Criteria ="[AllowEdit]=False")]
    public partial class SalesOrder : YsvObject,IReportPrintable, IFilterByDate
    {
        [Browsable(false)]
        public bool AllowEdit => DeliveryStatus == DeliveryStatus.None ||
            DeliveryStatus == DeliveryStatus.Exported;
            
Chạy thử phần mềm, kết quả là, ở đơn hàng hủy, chúng ta chỉ chỉnh sửa được nội dung ghi chú mà thôi.
Chúc các bạn thành công. Nếu có khó khăn gì thì cứ pull code từ Rep: Examples nhé. Hẹn gặp lại các bạn ở bài sau.