Class: Inventory::ItemOnOrder
- Inherits:
-
BaseService
- Object
- BaseService
- Inventory::ItemOnOrder
- Defined in:
- app/services/inventory/item_on_order.rb
Overview
Service object: item on order.
Defined Under Namespace
Classes: Result
Instance Method Summary collapse
Instance Method Details
#format_shipment_item(ship_it) ⇒ Object
31 32 33 34 35 36 37 38 39 40 |
# File 'app/services/inventory/item_on_order.rb', line 31 def format_shipment_item(ship_it) { promised_delivery_date: ship_it.promised_delivery_date, total_open: ship_it.total_open, po_number: ship_it.purchase_order.reference_number, po_id: ship_it.purchase_order_id, po_order_date: ship_it.purchase_order.order_date, po_state: ship_it.purchase_order.state } end |
#process(item_id:, store_id:) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/services/inventory/item_on_order.rb', line 9 def process(item_id:, store_id:) sql = <<~SQL.squish SELECT shipment_items.* FROM shipment_items INNER JOIN purchase_orders ON purchase_orders.id = shipment_items.purchase_order_id INNER JOIN purchase_order_items ON purchase_order_items.id = shipment_items.purchase_order_item_id INNER JOIN purchase_order_shipments ON purchase_order_shipments.id = shipment_items.purchase_order_shipment_id WHERE purchase_order_items.item_id = ? AND purchase_orders.store_id = ? AND purchase_orders.state IN ('partially_receipted','pending_acknowledgement','pending_fulfillment','shipped') AND purchase_order_shipments.state IN ('preparing','shipped','partially_receipted') AND shipment_items.state IN ('not_receipted','partially_receipted') AND purchase_order_shipments.promised_delivery_date IS NOT NULL ORDER BY purchase_order_shipments.promised_delivery_date ASC SQL records = ShipmentItem.find_by_sql([sql, item_id, store_id]) on_order = records.map { |ship_it| format_shipment_item(ship_it) } Result.new(on_order: on_order) end |