comee_core 0.2.86 → 0.2.87
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8087c47cfff3765329e378c4f90dc44a0a12d14335fe551d6a0822de437b9b13
|
4
|
+
data.tar.gz: cae23b72d5f323a8cdc53e60ca4834d1017afbad1a6902e6cc0e70d1d23c2047
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5585235c8cf45b06f896babb9b0d6e4f958c0b4cc8ed22887d637ddcca1592b40ace4bb0a28e9b143d5b37bc201c77c86ead2730198defd41d497eb8c68f97d3
|
7
|
+
data.tar.gz: 328f1153595fe03a94db8fab8a961bc42c7e998ea68e50ccda75423b86439f4bec8303205c0afd25b1c92371b3a928cf990df146448d2bd0e531e1e63b59267c
|
@@ -3,6 +3,19 @@ module Comee
|
|
3
3
|
class CustomsDetailsController < ApplicationController
|
4
4
|
include Common
|
5
5
|
|
6
|
+
def filter
|
7
|
+
customs_details = Comee::Core::CustomsDetail.includes(:sales_order).ransack(params[:q]).result
|
8
|
+
render_content(customs_details)
|
9
|
+
end
|
10
|
+
|
11
|
+
def send_customs_details
|
12
|
+
service = BeoService.new(params[:id])
|
13
|
+
data = service.send_customs_details
|
14
|
+
render json: {success: true, data: data}
|
15
|
+
rescue StandardError => e
|
16
|
+
render json: {success: false, error: e.message}, status: :unprocessable_entity
|
17
|
+
end
|
18
|
+
|
6
19
|
private
|
7
20
|
|
8
21
|
def model_params
|
@@ -32,8 +45,8 @@ module Comee
|
|
32
45
|
:closure_mark3,
|
33
46
|
:closure_mark4,
|
34
47
|
:closure_mark5,
|
35
|
-
:
|
36
|
-
:
|
48
|
+
:sales_order_id,
|
49
|
+
transportation_route: %i[order route value]
|
37
50
|
)
|
38
51
|
end
|
39
52
|
end
|
@@ -3,6 +3,14 @@ module Comee
|
|
3
3
|
class CustomsDetail < ApplicationRecord
|
4
4
|
belongs_to :sales_order
|
5
5
|
|
6
|
+
def self.ransackable_attributes(_auth_object = nil)
|
7
|
+
%w[id sales_order_id]
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.ransackable_associations(_auth_object = nil)
|
11
|
+
%w[sales_order]
|
12
|
+
end
|
13
|
+
|
6
14
|
validates :registration_type, :export_declaration_type, :participant_constellation, :mode_of_transport_type, :destination_country,
|
7
15
|
:additional_identifier, :packaging_type, :export_customs_office, :customs_office_of_exit, :mode_of_transport,
|
8
16
|
:delivery_term_code, presence: true
|
@@ -0,0 +1,154 @@
|
|
1
|
+
require "httparty"
|
2
|
+
|
3
|
+
module Comee
|
4
|
+
module Core
|
5
|
+
class BeoService
|
6
|
+
def initialize(id)
|
7
|
+
@atlas_token = ENV.fetch("ATLAS_TOKEN")
|
8
|
+
@atlas_base_url = ENV.fetch("ATLAS_BASE_URL")
|
9
|
+
@encoded_auth = ENV.fetch("ENCODED_AUTH")
|
10
|
+
@customs_detail = Comee::Core::CustomsDetail.includes(sales_order: :customer_order).find_by(sales_order_id: id)
|
11
|
+
@line_items = Comee::Core::SalesOrderItem.includes(:product, :unit, :customer_order_item, :source,
|
12
|
+
:purchase_order_item).where(sales_order_id: id)
|
13
|
+
@transportation_routes = []
|
14
|
+
@position_data = []
|
15
|
+
raise(StandardError, "No customs detail filed for sales order") unless @customs_detail.present?
|
16
|
+
|
17
|
+
@address = @customs_detail.sales_order.customer_order.client.address.split(", ")
|
18
|
+
@customs_detail.transportation_route.each do |tr|
|
19
|
+
@transportation_routes << tr["route"][0, 2]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def prepare_data
|
24
|
+
@line_items.each do |line_item, index|
|
25
|
+
mp = Comee::Core::MasterPrice.includes(:country_of_origin).find_by(primary: true, product_id: line_item.product.id)
|
26
|
+
sii = Comee::Core::ShipmentItem.find_by(sales_order_item_id: line_item.id)
|
27
|
+
@position_data << {
|
28
|
+
"warePositionsnummer": index,
|
29
|
+
"wareWarennummerKN8": line_item.product.hs_code,
|
30
|
+
"wareWarenbezeichnung": line_item.product.hs_description,
|
31
|
+
"wareRegistriernummerFremdsystem": @customs_detail.sales_order.order_number,
|
32
|
+
"wareUrsprungsbundesland": mp.state_of_origin,
|
33
|
+
"wareEigenmasse": line_item.product.weight * line_item.quantity,
|
34
|
+
"wareRohmasse": line_item.product.weight * line_item.quantity,
|
35
|
+
"ausfuhrLand": "DE",
|
36
|
+
"ursprungsland": mp.country_of_origin.code,
|
37
|
+
"beantragtesVerfahren": "10",
|
38
|
+
"vorhergehendesVerfahren": "00",
|
39
|
+
"zusatzlichesVerfahren": "F61",
|
40
|
+
"aussenhandelsstatistikMenge": line_item.quantity,
|
41
|
+
"aussenhandelsstatistikWert": line_item.quantity * line_item.price,
|
42
|
+
"packstuck": [
|
43
|
+
{
|
44
|
+
"packstuckNummer": "1",
|
45
|
+
"packstuckAnzahl": sii.pallet_no,
|
46
|
+
"packstuckVerpackungsart": sii.package_type.split(" ")[0],
|
47
|
+
"packstuckZeichenNummern": @customs_detail.sales_order.order_number
|
48
|
+
}
|
49
|
+
]
|
50
|
+
}
|
51
|
+
end
|
52
|
+
|
53
|
+
data = {
|
54
|
+
"dataIdentifier": "",
|
55
|
+
"kundenNumber": "",
|
56
|
+
"mandantId": "",
|
57
|
+
"module": {
|
58
|
+
"ausfuhr": {
|
59
|
+
"data": "true",
|
60
|
+
"email": "",
|
61
|
+
"autosend": "false"
|
62
|
+
}
|
63
|
+
},
|
64
|
+
"messageData": {
|
65
|
+
"ausfuhr": {
|
66
|
+
"expdat": [
|
67
|
+
{
|
68
|
+
"kopf": {
|
69
|
+
"eoriNiederlassungsnummer": "DE47897410000",
|
70
|
+
"dienststellennummer": "DE014851",
|
71
|
+
"artderAnmeldung": @customs_detail.registration_type.split(" ")[0],
|
72
|
+
"artderAnmeldungAusfuhr": @customs_detail.export_declaration_type,
|
73
|
+
"ausfuhrLand": "DE",
|
74
|
+
"beteiligtenKonstellation": @customs_detail.participant_constellation.split(" ")[0],
|
75
|
+
"sicherheit": @customs_detail.registration_type.split(" ")[0] == "CO" ? 0 : 2,
|
76
|
+
"container": @customs_detail.containerized == true ? 1 : 0,
|
77
|
+
"bestimmungsLand": @customs_detail.destination_country,
|
78
|
+
"referenznummerUCR": @customs_detail.sales_order.customer_order.consignee,
|
79
|
+
"lrn": @customs_detail.sales_order.order_number,
|
80
|
+
"beforderungsmittelImInlandVerkehrszweig": @customs_detail.mode_of_transport,
|
81
|
+
"beforderungsmittelderGrenzeVerkehrszweig": @customs_detail.mode_of_transport_at_border,
|
82
|
+
"beforderungsmittelderGrenzeArt": @customs_detail.mode_of_transport_type,
|
83
|
+
"beforderungsmittelderGrenzeKennzeichen": "UNBEKANNT",
|
84
|
+
"beforderungsmittelderGrenzeStaatszugehorigkeit": @customs_detail.mode_of_transport_nationality.split(" ")[0],
|
85
|
+
"beforderungsmittelBeimAbgang": [
|
86
|
+
{
|
87
|
+
"sequenznummer": "1",
|
88
|
+
"artderIdentifikation": @customs_detail.type_of_identification.split(" ")[0],
|
89
|
+
"kennzeichen": @customs_detail.additional_identifier.split(" ")[0],
|
90
|
+
"staatszugehorigkeit": @customs_detail.nationality.split(" ")[0]
|
91
|
+
}
|
92
|
+
],
|
93
|
+
"ausfuhrzollstelleDienststellennummer": @customs_detail.export_customs_office.split(" ")[0],
|
94
|
+
"vorgeseheneAusgangszollstelleDienststellennummer": @customs_detail.customs_office_of_exit.split(" ")[0],
|
95
|
+
"geschaftsvorgangArt": "11",
|
96
|
+
"geschaftsvorgangRechnungspreis": @customs_detail.sales_order.total_price,
|
97
|
+
"geschaftsvorgangWahrung": "EUR",
|
98
|
+
"beforderungsroute": {
|
99
|
+
"ausgewahlteLander": @transportation_routes,
|
100
|
+
"beforderungsVon": @customs_detail.transportation_route[0]["route"].split(" ")[0],
|
101
|
+
"beforderungsBis": @customs_detail.transportation_route[-1]["route"].split(" ")[0]
|
102
|
+
},
|
103
|
+
"empfanger": {
|
104
|
+
"tin": "",
|
105
|
+
"niederlassungsNummer": "",
|
106
|
+
"name": @customs_detail.sales_order.customer_order.client.name,
|
107
|
+
"strasse": @address[0],
|
108
|
+
"plz": @address[-1],
|
109
|
+
"ort": "#{@address[1].split(' ')[-3]} #{@address[1].split(' ')[-2]}",
|
110
|
+
"land": @address[1].split(" ")[-1]
|
111
|
+
},
|
112
|
+
"warenortArtdesOrtes": "B",
|
113
|
+
"warenortArtDerOrtsbestimmung": "Y",
|
114
|
+
"warenortZusatzlicheKennung": @customs_detail.additional_identifier.split(" ")[0],
|
115
|
+
"lieferbedingungIncotermCode": @customs_detail.delivery_term_code[0, 3],
|
116
|
+
"lieferbedingungOrt": "Hamburg"
|
117
|
+
},
|
118
|
+
"position": @position_data
|
119
|
+
}
|
120
|
+
]
|
121
|
+
}
|
122
|
+
}
|
123
|
+
}
|
124
|
+
|
125
|
+
JSON(data)
|
126
|
+
end
|
127
|
+
|
128
|
+
def send_customs_details
|
129
|
+
response = HTTParty.post("#{@atlas_base_url}/PutData", headers: {'Content-Type': "application/json",
|
130
|
+
'token': @atlas_token,
|
131
|
+
'bearertoken': bearer_token}, body: prepare_data)
|
132
|
+
unless [200, 201].include?(response.code)
|
133
|
+
raise(StandardError,
|
134
|
+
"Failed to send POST request with token: #{response.code} - #{response.body}")
|
135
|
+
end
|
136
|
+
|
137
|
+
JSON.parse(response.body)
|
138
|
+
end
|
139
|
+
|
140
|
+
private
|
141
|
+
|
142
|
+
def bearer_token
|
143
|
+
response = HTTParty.post("#{@atlas_base_url}/authenticate", headers: {
|
144
|
+
'Authorization': "Basic #{@encoded_auth}",
|
145
|
+
'Accept': "application/json"
|
146
|
+
})
|
147
|
+
|
148
|
+
raise(StandardError, "Failed to obtain bearer token: #{response.code} - #{response.body}") unless response.code == 200
|
149
|
+
|
150
|
+
JSON.parse(response.body)["accessToken"]
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
data/config/routes.rb
CHANGED
@@ -149,12 +149,23 @@ Comee::Core::Engine.routes.draw do
|
|
149
149
|
post "cancel"
|
150
150
|
end
|
151
151
|
end
|
152
|
-
|
152
|
+
|
153
|
+
resources :customs_details do
|
154
|
+
collection do
|
155
|
+
post "filter"
|
156
|
+
end
|
157
|
+
|
158
|
+
member do
|
159
|
+
post "send", action: :send_customs_details
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
153
163
|
resources :item_statuses do
|
154
164
|
collection do
|
155
165
|
post "filter"
|
156
166
|
end
|
157
167
|
end
|
168
|
+
|
158
169
|
resources :fulfillment_centers
|
159
170
|
|
160
171
|
resources :client_warehouses
|
data/lib/comee/core/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: comee_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.87
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henock L.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-06-
|
11
|
+
date: 2024-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_model_serializers
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: httparty
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: image_processing
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -396,6 +410,7 @@ files:
|
|
396
410
|
- app/serializers/comee/core/unit_serializer.rb
|
397
411
|
- app/serializers/comee/core/user_application_role_serializer.rb
|
398
412
|
- app/serializers/comee/core/user_serializer.rb
|
413
|
+
- app/services/comee/core/beo_service.rb
|
399
414
|
- app/services/comee/core/customer_order_service.rb
|
400
415
|
- app/services/comee/core/product_lookup_service.rb
|
401
416
|
- app/services/comee/core/quotation_request_service.rb
|