Skip to content

Commit 7e3f550

Browse files
committed
Add shipment_job on gate
1 parent a99e499 commit 7e3f550

File tree

10 files changed

+59
-54
lines changed

10 files changed

+59
-54
lines changed

core/app/models/bouquet/sales_order.rb

-19
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,10 @@ class SalesOrder < ApplicationRecord
77
belongs_to :customer
88
has_one :shipment, dependent: :destroy
99

10-
after_create :shipping
1110
def shipping
1211
shipment = build_shipment
1312
shipment.date = Time.current
1413
shipment.save
15-
16-
shipment.delivering
17-
end
18-
19-
=begin
20-
after_create do
21-
location = Bouquet::Location.first
22-
storage = Bouquet::Storage.first
23-
24-
shipment = build_shipment(quantity: quantity)
25-
shipment.save
26-
27-
deliverie = shipment.deliveries.new(quantity: quantity, location_id: location.id)
28-
deliverie.save
29-
30-
retrieval = deliverie.retrievals.new(quantity: quantity, storage_id: storage.id)
31-
retrieval.save
3214
end
33-
=end
3415
end
3516
end

core/app/models/bouquet/shipment.rb

+28-26
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,37 @@ class Shipment < ApplicationRecord
66
has_many :locations, through: :deliveries
77

88
def delivering
9-
ActiveRecord::Base.transaction do
10-
location = Bouquet::Location.first
11-
12-
deliverie = deliveries.new(quantity: quantity, location_id: location.id)
13-
deliverie.date = Time.current
14-
deliverie.save
15-
16-
sales_order.product.assemblies.each do |assembly|
17-
assembly_quantity = assembly.quantity
18-
19-
storages = Bouquet::Storage.with_material(assembly.material_id)
20-
storages.each do |storage|
21-
break if assembly_quantity <= 0
22-
if storage.quantity > 0
23-
retrieval_quantity = if storage.quantity - assembly_quantity < 0
24-
storage.quantity
25-
else
26-
assembly_quantity
27-
end
28-
29-
retrieval = deliverie.retrievals.create(quantity: retrieval_quantity, storage_id: storage.id)
30-
retrieval.date = Time.current
31-
retrieval.save
32-
33-
assembly_quantity = assembly_quantity - retrieval_quantity
9+
location = Bouquet::Location.first
10+
11+
deliverie = deliveries.new(quantity: quantity, location_id: location.id)
12+
deliverie.date = Time.current
13+
deliverie.save
14+
15+
sales_order.product.assemblies.each do |assembly|
16+
assembly_quantity = assembly.quantity
17+
18+
storages = Bouquet::Storage.with_material(assembly.material_id)
19+
storages.each do |storage|
20+
break if assembly_quantity <= 0
21+
22+
if storage.quantity > 0
23+
retrieval_quantity = if storage.quantity - assembly_quantity >= 0
24+
assembly_quantity
25+
else
26+
storage.quantity
3427
end
28+
29+
retrieval = deliverie.retrievals.create(quantity: retrieval_quantity, storage_id: storage.id)
30+
retrieval.date = Time.current
31+
retrieval.save
32+
33+
assembly_quantity = assembly_quantity - retrieval_quantity
3534
end
35+
end
3636

37-
raise ActiveRecord::Rollback if assembly_quantity > 0
37+
if assembly_quantity > 0
38+
puts "Delivering Error: Shortage #{assembly.material.name} = #{assembly_quantity}"
39+
raise ActiveRecord::Rollback
3840
end
3941
end
4042
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
require 'rails_helper'
2+
3+
module Bouquet
4+
RSpec.describe ShipmentJob, :type => :job do
5+
pending "add some examples to (or delete) #{__FILE__}"
6+
end
7+
end

gate/app/controllers/bouquet/gate/sales_orders_controller.rb

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def create
2323

2424
if @sales_order.save
2525
render json: @sales_order, status: :created #, location: @sales_order
26+
Bouquet::Gate::ShipmentJob.perform_later(@sales_order)
2627
else
2728
render json: @sales_order.errors, status: :unprocessable_entity
2829
end
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Bouquet::Gate::ShipmentJob.perform_later
2+
module Bouquet::Gate
3+
class ShipmentJob < Bouquet::Gate::ApplicationJob
4+
queue_as :default
5+
6+
def perform(sales_order)
7+
sales_order.shipping
8+
9+
ActiveRecord::Base.transaction do
10+
sales_order.shipment.delivering
11+
end
12+
end
13+
end
14+
end

store/app/assets/javascripts/bouquet/store/bundle.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

store/app/assets/stylesheets/bouquet/store/bundle.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

store/private/static/app/actions/InventoryActions.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import * as types from '../constants/ActionTypes'
22
import 'isomorphic-fetch'
33

4-
const endpoint = 'http://localhost:3000'
5-
//const endpoint = ''
4+
//const endpoint = 'http://localhost:3000'
5+
const endpoint = ''
66

77
export function receiveStorages(storages) {
88
return {

store/private/static/app/actions/MaterialActions.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import * as types from '../constants/ActionTypes'
22
import 'isomorphic-fetch'
33

4-
const endpoint = 'http://localhost:3000'
5-
//const endpoint = ''
4+
//const endpoint = 'http://localhost:3000'
5+
const endpoint = ''
66

77
export function receiveMaterials(materials) {
88
return {

store/private/static/app/actions/ProductActions.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import * as types from '../constants/ActionTypes'
22
import 'isomorphic-fetch'
33

4-
const endpoint = 'http://localhost:3000'
5-
//const endpoint = ''
4+
//const endpoint = 'http://localhost:3000'
5+
const endpoint = ''
66

77
export function receiveProducts(products) {
88
return {

0 commit comments

Comments
 (0)