Laravel + Dcat admin 開發一個健壯的 erp 專案

youxx發表於2020-09-16

背景

4個月前我寫過一篇文章 dcat-admin 開源框架在 erp 專案中的應用 在幾個月前我只是用其完成一些功能開發。但是在專案健壯,以及程式碼如 dcat 一些深度結合上做的還是不夠完善。這個幾個月我重新在已有的經驗上,對其進行了一些深入的整合。包括在 sass 方面的結合。已經程式碼健壯性方面的加強。

常用的初始化

Laravel + Dcat admin 開發一個健壯的 erp 專案

ERP 常用的單據實現

  • 在這幾個月我把 erp 常用的單據做成了一個abstract class,只要繼承 OrderController 並實現其中的幾個抽象方法。便可以得到一張單據的編輯建立。裡面會自動包含單據常用的稽核,刪除,批量增加等。
  • 抽象方法(我們業務邏輯只要展現資料,至於稽核刪除批量新增,我們封裝好的進行統一管理比如稽核的時候檢測明細的業務數量是否為0,單據是否包含明細)

Laravel + Dcat admin 開發一個健壯的 erp 專案

Laravel + Dcat admin 開發一個健壯的 erp 專案

  • 頁面效果
    • 新增
      Laravel + Dcat admin 開發一個健壯的 erp 專案
    • 編輯
      Laravel + Dcat admin 開發一個健壯的 erp 專案

業務邏輯的梳理

  • 在進銷存以及 erp 軟體中,比如出入庫的時候會扣減批次庫存,產品庫存,以及插入一條庫存往來的記錄。有的老程式設計師可能會用到資料庫的觸發器,儲存過程等等。在這裡我可以介紹下在 laravel 中如何拆分這些業務
  • 圖示庫存往來

Laravel + Dcat admin 開發一個健壯的 erp 專案

  • 分析:
    我們入庫的時候,首先明細在批次庫存進行加減,然後產品庫存也會加減,涉及加減的都會插入一條庫存往來賬。而庫存往來賬的表,包含了批次庫存以及產品庫存發生變化所需要的欄位,我們可以通過監聽出入庫訂單稽核狀態的變化,比如稽核通過,然後插入庫存往來帳。再通過監聽庫存往來帳。進行批次庫存的加減。在進行監聽批次庫存的加減進行產品庫存的加減。

    • 採購入庫單監聽(PurchaseInOrderObserver)只要訂單稽核通過就插入一條庫存往來賬
      Laravel + Dcat admin 開發一個健壯的 erp 專案

    • 庫存往來賬監聽 (StockHistoryObserver) 根據單據型別進行批次庫存扣減
      Laravel + Dcat admin 開發一個健壯的 erp 專案

    • 批次庫存監聽 (SkuStockBatchObserver)當批次庫存進行扣減的時候對產品庫存進行扣減
      Laravel + Dcat admin 開發一個健壯的 erp 專案

  • 好處

    • 當我們有其他的業務要扣減庫存的時候,比如客戶銷售單。我們只需要監聽客戶銷售單的稽核。無需在寫一份庫存扣減的業務邏輯。提升我們的業務健壯性。
    • 客戶銷售單
      Laravel + Dcat admin 開發一個健壯的 erp 專案
      Laravel + Dcat admin 開發一個健壯的 erp 專案
      Laravel + Dcat admin 開發一個健壯的 erp 專案
      Laravel + Dcat admin 開發一個健壯的 erp 專案
      Laravel + Dcat admin 開發一個健壯的 erp 專案
      Laravel + Dcat admin 開發一個健壯的 erp 專案

稽核圖示實現

  • 程式碼
    Laravel + Dcat admin 開發一個健壯的 erp 專案
    Laravel + Dcat admin 開發一個健壯的 erp 專案

  • 使用

    $form->reviewicon('欄位', '稽核狀態');

    Laravel + Dcat admin 開發一個健壯的 erp 專案

    結尾

    傳統的 erp 軟體以 java c# 為主。但是結合我自己這幾個月的摸索, 如果對 laravel,以及 Dcat,laravel-admin 底層有一定熟悉。我們可以依靠這些開源的專案快速構建起我們的 crud。同時合理規劃好 laravel 的專案架構,業務層架構。程式碼維護起來還是蠻舒服的。如果大家有需要專案開發也可以聯絡我

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章