0.0
No commit activity in last 3 years
No release in over 3 years
Unidom (UNIfied Domain Object Model) is a series of domain model engines. The Shipment domain model engine includes the Shipment and the Shipment Item. Unidom (统一领域对象模型)是一系列的领域模型引擎。装运领域模型引擎包括装运和装运项的模型。
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

Unidom Shipment 装运领域模型引擎

Documentation License

Gem Version Dependency Status

Unidom (UNIfied Domain Object Model) is a series of domain model engines. The Shipment domain model engine includes the Shipment, Shipment Item, Shipment Package, Shipment Package Item, and Shipment Receipt model. Unidom (统一领域对象模型)是一系列的领域模型引擎。装运领域模型引擎包括装运、装运项、装运包裹、装运包裹项、装运收据的模型。

Recent Update

Check out the Road Map to find out what's the next. Check out the Change Log to find out what's new.

Usage in Gemfile

gem 'unidom-shipment'

Run the Database Migration

rake db:migrate

The migration versions start with 200210.

Call the Model

shipment       = Unidom::Shipment::Shipment.valid_at.alive.first
shipment_item  = Unidom::Shipment::ShipmentItem.valid_at.alive.first
shipment_items = shipment.items
inventory_item = Unidom::Inventory::GroupedInventoryItem.valid_at.alive.first

shipment_package      = Unidom::Shipment::ShipmentPackage.serial_number_is('X5-20161231-1234').valid_at.alive.first
shipment_package_item = shipment_package.items.create! shipment_item: shipment_item, quantity: 10
shipment_receipt      = shipment_package.receipts.create! shipped: shipment_item.shipped, store_item: inventory_item

Include the Concerns

include Unidom::Shipment::Concerns::AsShipped

As Shipped

The As Shipped concern do the following tasks for the includer automatically:

  1. Define the has_many :shipment_items macro as: has_many :shipment_items, class_name: 'Unidom::Shipment::ShipmentItem', foreign_key: :shipped_id
  2. Define the has_many :shipment_receipts macro as: has_many :shipment_receipts, class_name: 'Unidom::Shipment::ShipmentReceipt', foreign_key: :shipped_id

Enum codes

Conveyance enum code

Unidom::Shipment::Conveyance::customer_shipment # 客户装运
Unidom::Shipment::Conveyance::customer_return   # 客户退回
Unidom::Shipment::Conveyance::purchase_shipment # 购买装运
Unidom::Shipment::Conveyance::purchase_return   # 进货退回
Unidom::Shipment::Conveyance::transfer          # 转运
Unidom::Shipment::Conveyance::drop_shipment     # 直接装运

Disable the Model & Migration

If you only need the app components other than models, the migrations should be neglected, and the models should not be loaded.

# config/initializers/unidom.rb
Unidom::Common.configure do |options|

  options[:neglected_namespaces] = %w{
    Unidom::Shipment
  }

end

RSpec examples

# spec/models/unidom_spec.rb
require 'unidom/shipment/models_rspec'

# spec/types/unidom_spec.rb
require 'unidom/shipment/types_rspec'

# spec/validators/unidom_spec.rb
require 'unidom/shipment/validators_rspec'