Làm sao để thiết lập một liên hệ trở thành khách hàng hoặc nhà cung cấp trong Odoo 13?

Phương Đỗ

Tại sao?

Như các bạn đã biết trong Odoo, khách hàng, nhà cung cấp và tất cả các dạng liên hệ (contact) đều được lưu trong cơ sở dữ liệu là Partner (res.partner). Một liên hệ (contact) có thể là một khách hàng, có thể là một nhà cung cấp hoặc vừa là khách hàng vừa là nhà cung cấp. 


Đối với Odoo 12 và các phiên bản trước đó, chúng ta rất dễ dàng nhận biết liên hệ đó là khách hàng hoặc là nhà cung cấp dựa vào trường thông tin "Is a customer" hoặc "Is a vendor" được hiển thị trên giao diện tab "Sales & Purchases" của một liên hệ như hình bên dưới:




Người dùng có thể tùy chọn liên hệ đó là khách hàng / nhà cung cấp hoặc cả hai bằng cách bật/ tắt hai trường thông tin này trên giao diện.


Tuy nhiên khái niệm này đã bị thay đổi kể từ phiên bản Odoo 13, chúng ta sẽ không còn 02 trường thông tin này nữa. Thay vào đó là hai trường thông tin "Customer Rank" và "Supplier Rank", điều đặc biệt là chúng không hiển thị trên giao diện để người dùng tùy chọn. Nguyên nhân của việc thay đổi này đã được Odoo giải thích là nhằm tránh gây bối rối cho người dùng cuối khi dùng tính năng tìm kiếm một khách hàng/nhà cung cấp, chi tiết xem tại đây.


Thêm vào đó, người dùng có thể dễ dàng tạo một liên hệ là khách hàng qua menu Sales > Orders > Customers, khi đó trường thông tin Customer Rank sẽ được tự động cập nhật là 1 trên hệ thống, nghĩa là trường thông tin này được bật lên, giống như (Is a customer = true) ở phiên bản Odoo 12. Tương tự cho nhà cung cấp, tạo liên hệ là nhà cung cấp qua menu Purchase > Purchase > Vendors.


Vì sự thay đổi được nêu bên trên, nên khi tạo một đơn mua hàng (Purchase Order) hoặc tạo một đơn bán hàng (Sales order) trên Odoo 13, trên trường thông tin Vendor (hoặc Customer) hệ thống sẽ hiển thị tất cả các liên hệ (contact) để người dùng chọn thay vì chỉ lọc theo "Is a vendor" được bật cho Vendor  và "Is a customer" được bật cho Customer như lúc trước (Odoo 12  và phiên bản trước đó).


Chú ý: Trong trường hợp một liên hệ chưa phải là khách hàng hoặc nhà cung cấp, khi phát sinh hóa đơn khách hàng Customer Invoice (hoặc hóa đơn nhà cung cấp Vendor Bill) ở trạng thái "Đã vào sổ" (Posted) đối với liên hệ này, thì trường thông tin Customer Rank (hoặc Supplier Rank) sẽ được tự động cập nhật thành 1, nghĩa là liên hệ này đã được tự động cập nhật là khách hàng (hoặc nhà cung cấp).


Từ sự thay đổi của Odoo 13, chúng ta có thể thấy được 02 vấn đề của người dùng:

  1. Người dùng khi tạo một liên hệ là khách hàng nhưng thực ra nó là nhà cung cấp, làm sao để đổi lại mà không cần phải xóa dữ liệu và tạo mới?

  2. Người dùng tạo một liên hệ là khách hàng nhưng thực tế nó vừa là khách hàng vừa là nhà cung cấp, làm cách nào để cập nhật?


Để trả lời cho 02 vấn đề được nêu bên trên, các bạn theo dõi các cách thức và các bước thực hiện tại mục bên dưới nhé!


Cách thức thực hiện

Thực tế có 03 cách thức để người dùng thiết lập một liên hệ trở thành một khách hàng / nhà cung cấp trong Odoo 13:

  • Cách 01: Sử dụng tính năng Export và Import của Native Odoo để cập nhật trường Customer Rank / Supplier Rank.

  • Cách 02: Sử dụng Server Action để thiết lập một liên hệ là khách hàng / nhà cung cấp.

  • Cách 03: Tự động cập nhật một liên hệ thành khách hàng/ nhà cung cấp khi vào sổ hóa đơn bán hàng/ hóa đơn nhà cung cấp tương ứng.


Cách 01: Sử dụng tính năng Export và Import của Native Odoo để cập nhật trường Customer Rank / Supplier Rank


Ví dụ, hiện tại người dùng đang có 02 khách hàng là A&M và Azure Interior. Người dùng mong muốn cập nhật khách hàng A&M thành nhà cung cấp và Azure Interior vừa là khách hàng vừa là nhà cung cấp.





Tại danh sách khách hàng / nhà cung cấp, người dùng chọn tất cả những khách hàng / nhà cung cấp cần cập nhật trường thông tin Customer Rank hoặc Supplier Rank và chọn Action > Export như hình bên dưới:



Lúc này hệ thống sẽ xuất hiện wizard "Export Data" để thực hiện thao tác export thông tin. Tại màn hình này, người dùng tùy chọn:

[1] Bấm chọn "I want to update data (import-compatible export)"

[2] Chọn export data: Name, Customer Rank, Supplier Rank

[3] Bấm vào nút "Export" để xuất dữ liệu




Dựa vào thông tin được xuất ra, chúng ta có thể thấy trường thông tin Customer Rank có giá trị bằng 1 cho khách hàng A&M và Azure Interior, trường thông tin Supplier Rank có giá trị bằng 0.



Lúc này người dùng thực hiện cập nhật lại giá trị Customer Rank = 0 và Supplier Rank = 1 cho dòng A&M để cập nhật khách hàng A&M thành nhà cung cấp. Đồng thời cập nhật giá trị Supplier Rank = 1 cho dòng Azure Interior để cập nhật khách hàng này vừa là khách hàng và vừa là nhà cung cấp.



Tiếp tục, người dùng import file đã chỉnh sửa để cập nhật trên hệ thống bằng chức năng import.



Sau khi import để cập nhật dữ liệu thành công, chúng ta dễ dàng thấy khách hàng A&M đã cập nhật thành nhà cung cấp và Azure Interior vừa là khách hàng vừa là nhà cung cấp.






Cách 02: Sử dụng Server Action để thiết lập một liên hệ là khách hàng / nhà cung cấp



Với cách sử dụng Server Action này, chúng ta cũng thực hiện công việc tương tự là thiết lập Customer Rank / Supplier Rank bằng 0 hoặc 1. Trước tiên, chúng ta cần bật "Developer mode" để hệ thống hiển thị menu: Settings > Technical > Actions > Server Actions


Bấm tạo mới một Server Action và thực hiện các thao tác như hướng dẫn hình bên dưới:



  • [1] Nhập tên Action. Ví dụ như hình: Set as customer

  • [2] Chọn ModelContact

  • [3] Chọn Action To DoUpdate the Record 

  • [4] Bấm Add a line  và chọn giá trị Customer Rank (res.partner) với value = 1 nếu muốn thiết lập khách hàng hoặc chọn giá trị Supplier Rank (res.partner) với value = 1 nếu muốn thiết lập nhà cung cấp.

  • [5] Sau khi đã nhập xong giá trị, người dùng bấm nút Create Contextual Action để kích hoạt chức năng


Một khi đã kích hoạt xong Server Action, hệ thống sẽ xuất hiện chức năng "Set as customer" tại menu Action của một liên hệ (contact) như hình bên dưới:



Ví dụ: hiện tại chúng ta đang có Nhà cung cấp A&M, người có thể thiết lập nhà cung cấp này thành khách hàng bằng Server Action "Set as customer" đã được kích hoạt theo các bước thao tác được hướng dẫn bên dưới.


Đầu tiên khi đã có Server Action "Set as customer" được kích hoạt, tại danh sách liên hệ (dạng listview) bấm chọn các liên hệ muốn thiết lập thành Khách hàng (hoặc chọn một liên hệ ở dạng giao diện form (formview)), sau đó người dùng tiếp tục bấm chọn nút Action > Set as customer như hình:



Sau khi bấm chọn Action "Set as customer", hệ thống sẽ tự động cập nhật liên hệ (contact) thành customer. 



Như vậy chúng ta đã hoàn thành xong thao tác chuyển một liên hệ thành một khách hàng mà không cần bất cứ thao tác nào khác.


Cách 03: Tự động cập nhật một liên hệ thành khách hàng/ nhà cung cấp khi vào sổ hóa đơn bán hàng / hóa đơn nhà cung cấp tương ứng.


Đối với cách này, chúng ta cần phát sinh hóa đơn khách hàng / hóa đơn nhà cung cấp ở trạng thái Vào sổ (Posted) để hệ thống tự động thiết lập một liên hệ thành khách hàng/ nhà cung cấp. Bên dưới là một ví dụ và các bước thao tác để cập nhật tự động một liên hệ thành nhà cung cấp khi có phát sinh hóa đơn nhà cung cấp ở trạng thái Posted.


Ví dụ: Chúng ta đang có một khách hàng "BC company", từ khách hàng này chúng ta tiến hành mua hàng từ đối tượng này. Sau đó tạo hóa đơn nhà cung cấp cho đơn hàng mua này.






Sau khi lên Đơn hàng mua và nhận hàng từ khách hàng "BC company". Bấm nút "Create Bill" để tạo hóa đơn nhà cung cấp cho đối tượng này.



Bấm nút "Confirm" để xác nhận hóa đơn nhà cung cấp, lúc này hóa đơn đã chuyển sang trạng thái "Posted".


Kiểm tra lại danh sách nhà cung cấp (Vendor) trên menu: Purchase > Orders > Vendors, ta có thể thấy rằng khách hàng "BC company" cũng đã được thiết lập tự động thành nhà cung cấp.




Kết luận


Qua ba cách thức thực hiện việc thiết lập một liên hệ thành một khách hàng/ nhà cung cấp, chúng ta có thể thấy rằng cách 01 sử dụng export và import của Odoo phức tạp hơn nhiều so với cách 02 là sử dụng Server Action, chỉ mất thời gian cấu hình một lần và áp dụng nó bất cứ lúc nào mà người dùng cần. Trong khi cách 01 chúng ta phải lặp lại toàn bộ các bước để tiến hành thiết lập một liên hệ thành khách hàng/ nhà cung cấp. Đối với cách 03 lại bị ràng buộc phải phát sinh hóa đơn khách hàng/ hóa đơn nhà cung cấp khi đã vào sổ mới có thể cập nhật tự động. Vì thế, cách 02 vẫn là cách tối ưu nhất để thiết lập một liên hệ thành khách hàng/ nhà cung cấp trên Odoo 13.