Skip to main content

Đơn hàng công trình

Mục tiêu:

CRM sẽ tạo ra 1 khái niệm "Đơn hàng công trình" mới, phục vụ việc duyệt các đơn hàng đồng bộ từ hệ thống IWM.

Hệ thống CRM chỉ có quyền xem + thay đổi đại ý bán và thầu thợ + duyệt đơn.

Chú ý: Việc chọn tt dựa vào khu vực làm việc

Tên class: SaleOrder

Tên trường Kiểu biến Ý nghĩa
Id long Id đơn hàng
Code string Mã đơn hàng
AppUserCreatorId long? Id admin tạo đơn hàng
ConstructionId long Id công trình mà đơn hàng được tạo 
ConstructionCustomerTypeId long Id kiểu Kh (enum)
CustomerId long? Id khách hàng
CustomerName string tên kh
CustomerPhone string  sdt kh
CustomerEmail string email kh
CustomerProvinceId long?
CustomerDistrictId long?
CustomerWardId long?
CustomerAddress string
BrokerWorkerId long? Id KH thầu thợ môi giới
WorkerId long? Id KH thầu thợ thực hiện đơn
CustomerSellId long?  Id KH đại lý bán hàng
PaymentTypeId long? Phương thức thanh toán (enum)
InformationBonus decimal? Phí cung cấp thông tin
InstallationBonus decimal? Phí cài đặt
MaintainBonus decimal? Phí bảo hành
UseInformationBonus bool
UseInstallationBonus bool
UseMaintainBonus bool
SubTotal decimal Giá niêm yết
DiscountAmount decimal? Chiết khấu
Total decimal Tổng đơn
AssignmentStatusId long Trạng thái điều phối (enum)
ApprovalStateId long Trạng thái duyệt (enum)
CreatedAt datetime ngày tạo
UpdatedAt datetime ngày cập nhật cuối
DeletedAt datetime? ngày xoá

 

Tên class: SaleOrderContent

Tên trường Kiểu biến Ý nghĩa
Id long
SaleOrderId long
ItemId long Id sản phẩm
Quantity decimal Số lượng theo dvt đã chọn
UnitOfMeasureId long đvt đã chọn
RequestedQuantity decimal số lượng theo đvt cơ bản của sp
PrimaryUnitOfMeasureId long dvt cơ bản của sp
SalePrice decimal? Giá niêm yết
RetailPriceNotVAT decimal Giá bán chưa thuế
RetailPrice decimal Giá bán đã thuế
Amount decimal Tổng giá trị dòng
Factor decimal? hệ số quy đổi đơn vị tính
DiscountAmount decimal Chiết khấu dòng

Các luồng logic chính:

  1. Đồng bộ đơn hàng từ IWM: Sau khi tạo, cập nhật đơn hàng trên IWM thì sẽ bắn Rabbit qua cho CRM với key SaleOrder.Sync
  2. Cập nhật thông tin đại lý + thầu thợ thực hiện trên CRM sẽ gọi api /update của thầu thợ để có thể lưu lại lịch sử ( nên viết controller riêng)
  3.  Duyệt/từ chối đơn trên CRM cũng sẽ gọi api /send hoặc /reject của IWM

 

Mô tả api:

API Chức năng Payload mẫu Response mẫu
/rpc/crm/sale-order/list Lấy danh sách các đơn hàng của công trình
{"constructionId":{"equal":1}}

[]

/rpc/crm/sale-order/count Lấy tổng số lượng đơn hàng của công trình
{"constructionId":{"equal":1}}

10

/rpc/crm/sale-order/filter-list-customer Filter đại lý bán ( CustomerTypeId là 1) và thầu thợ thực hiện (CustomerTypeId là 6)
{"Id":{"equal":1}}

hoặc 

{"Id":{"equal":6}}


[]
/rpc/crm/sale-order/filter-list-assignment-status filter trạng thái điều phối {} []
/rpc/crm/sale-order/filter-list-approval-state filter trạng thái duyệt đơn {} []
rpc/crm/sale-order/get Xem thông tin chi tiết đơn hàng {"id":1}
rpc/crm/sale-order/single-list-construction-customer-type Filter kiểu khách hàng {} []
rpc/crm/sale-order/update-sale-information Update thông tin đại lý bán và khách hàng thầu thợ

rpc/crm/sale-order/approve Duyệt đơn hàng với thông tin đại lý bán và khách hàng thầu thợ hiện tại
{"id":1}


rpc/crm/sale-order/reject Từ chối đơn hàng với thông tin đại lý bán và khách hàng thầu thợ hiện tại
{"id":1}