comee_core 0.1.63 → 0.1.64

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7799ea96479660919b2feddcb0ef645e8345a0fcd76d0a964d16444b128cd8a1
4
- data.tar.gz: 3260186fbe16cfaed82416e5ccaf76a039aa9fca284a01ba3fc8ef7c1797c9bd
3
+ metadata.gz: c4cd6ae8953f0384e6621da475902a2cc7dbde2c84878da91a819a3bb4dd03ef
4
+ data.tar.gz: cffd56f30c07ea7030935b845baffc6285d0064e2cc6e5c7557bc7b4a39ce805
5
5
  SHA512:
6
- metadata.gz: 6075b7c40bf2255b933d80bcaafc54ec3a45bfd237f5c0759bd47830e0d66b382c97a92a33eb0d82f9974867e2b508036b716bfa451a0c26e67936883f87b753
7
- data.tar.gz: 11e4007cd8d5606f29deca92f6d9fbb801fc3867cee39052440d1e45fb40e11607db1e7dd11284ecac5428e2455e11f2c10abf078565d6ea6d947d88d394ddb7
6
+ metadata.gz: 8d3565e8fad90e32587fafa45309b44faaeb04326aaf5ce108dbe4be90150858d40a88476c2b76fa4163552e6066ee05ec76fa3fd7698b8263661c5712e77f99
7
+ data.tar.gz: 4ee979f53c118c6c372d794657140d347b9177467ab3a041bb684e870f261b35b0511da3fc14c1a64923d5d18c98fa33d5e50a79aecdfc94dc436855fd46dc83
@@ -35,7 +35,8 @@ module Comee
35
35
  private
36
36
 
37
37
  def model_params
38
- params.required(:payload).permit(:code, :name, :description, :parent_id, :thumbnail_image, :preferred_units, :source_id, images: [])
38
+ params.required(:payload).permit(:code, :name, :description, :parent_id, :thumbnail_image, :preferred_units, :source_id, :weight,
39
+ :weight_unit_id, :dimensions, :hs_code, :hs_description, images: [])
39
40
  end
40
41
 
41
42
  def price_params
@@ -25,6 +25,33 @@ module Comee
25
25
  render json: {success: true}
26
26
  end
27
27
 
28
+ def filter_with_status
29
+ items = SalesOrderItem.includes(:sales_order, :product, :unit)
30
+ .ransack(params[:q]).result
31
+ statuses = ItemStatus.where(sales_order_item_id: items.map(&:id))
32
+ .select("MAX(id) AS max_id, sales_order_item_id")
33
+ .group(:sales_order_item_id)
34
+ .all
35
+ ids = statuses.map(&:max_id)
36
+ statuses = ItemStatus.where(id: ids).each_with_object({}) { |status, res| res[status.sales_order_item_id] = status }
37
+ result = items.each_with_object([]) do |item, res|
38
+ status = statuses[item.id]
39
+ data = {
40
+ sales_order_no: item.sales_order.order_number,
41
+ customer_item_no: item.customer_item_no,
42
+ product_code: item.product.code,
43
+ unit: item.unit.code,
44
+ quantity: item.quantity,
45
+ delivery_date: item.delivery_date,
46
+ handover_date: item.sales_order.handover_date,
47
+ po_reference: item.po_reference,
48
+ status: status&.status
49
+ }
50
+ res << data.merge(status&.details)
51
+ end
52
+ render json: {success: true, data: result}
53
+ end
54
+
28
55
  private
29
56
 
30
57
  def model_params
@@ -8,6 +8,7 @@ module Comee
8
8
  has_many_attached :images
9
9
 
10
10
  belongs_to :source, class_name: "Comee::Core::FulfillmentCenter", optional: true
11
+ belongs_to :weight_unit, class_name: "Comee::Core::Unit", optional: true
11
12
 
12
13
  validates :code, presence: true, uniqueness: true
13
14
  validates :name, presence: true
@@ -12,6 +12,22 @@ module Comee
12
12
  validates :customer_item_no, :delivery_date, presence: true
13
13
  validates :quantity, :price, presence: true, numericality: {greater_than: 0}
14
14
  validates :quantity_delivered, numericality: {greater_than_or_equal_to: 0}
15
+
16
+ def self.ransackable_attributes(_auth_object = nil)
17
+ %w[
18
+ customer_item_no
19
+ customer_order_item_id
20
+ delivery_date
21
+ eb_number
22
+ handover_date
23
+ lead_time
24
+ po_reference
25
+ product_id
26
+ sales_order_id
27
+ source_id
28
+ unit_id
29
+ ]
30
+ end
15
31
  end
16
32
  end
17
33
  end
@@ -1,8 +1,10 @@
1
1
  module Comee
2
2
  module Core
3
3
  class ProductSerializer < ActiveModel::Serializer
4
- attributes :id, :code, :name, :description, :thumbnail_image_url, :images_url, :preferred_units
4
+ attributes :id, :code, :name, :description, :thumbnail_image_url, :images_url, :preferred_units, :weight, :dimensions, :hs_code,
5
+ :hs_description
5
6
  belongs_to :source
7
+ belongs_to :weight_unit
6
8
  end
7
9
  end
8
10
  end
@@ -4,6 +4,7 @@ module Comee
4
4
  attributes :id, :customer_item_no, :quantity, :quantity_delivered, :price, :delivery_date, :eb_number, :lead_time, :comment,
5
5
  :action_note, :po_reference, :product, :unit
6
6
 
7
+ belongs_to :sales_order
7
8
  belongs_to :customer_order_item
8
9
  belongs_to :source
9
10
  belongs_to :unit
data/config/routes.rb CHANGED
@@ -77,6 +77,10 @@ Comee::Core::Engine.routes.draw do
77
77
  member do
78
78
  get "suggest", controller: :sales_order_items, action: :suggest_values
79
79
  end
80
+
81
+ collection do
82
+ post "filter_with_status"
83
+ end
80
84
  end
81
85
  post "/sales_orders/filter", controller: :sales_orders, action: :filter
82
86
  resources :sales_orders do
@@ -7,6 +7,14 @@ class CreateComeeCoreProducts < ActiveRecord::Migration[7.0]
7
7
  t.boolean :leaf, null: false, default: true
8
8
  t.string :ancestry
9
9
  t.jsonb :preferred_units, null: false, default: []
10
+ t.float :weight
11
+ t.references :weight_unit,
12
+ null: true,
13
+ index: {name: "wu_on_ccp_indx"},
14
+ foreign_key: {to_table: :comee_core_units}
15
+ t.string :dimensions
16
+ t.string :hs_code
17
+ t.string :hs_description
10
18
  t.references :source,
11
19
  null: true,
12
20
  index: {name: "source_on_ccp_indx"},
@@ -1,5 +1,5 @@
1
1
  module Comee
2
2
  module Core
3
- VERSION = "0.1.63".freeze
3
+ VERSION = "0.1.64".freeze
4
4
  end
5
5
  end
@@ -9,6 +9,11 @@ FactoryBot.define do
9
9
  leaf { true }
10
10
  ancestry { root.id.to_s }
11
11
  preferred_units { [] }
12
+ weight { 10 }
13
+ weight_unit factory: :unit
14
+ dimensions { "2cm x 3cm x 1cm" }
15
+ hs_code { Faker::Alphanumeric.alpha(number: 10) }
16
+ hs_description { Faker::Lorem.sentence }
12
17
  source factory: :fulfillment_center
13
18
  end
14
19
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comee_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.63
4
+ version: 0.1.64
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henock L.