correios_gem 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/SRO/client.rb +25 -0
- data/lib/SRO/helper.rb +118 -0
- data/lib/SRO/requests/track_shippings.rb +142 -0
- data/lib/SRO/requests/track_shippings_list.rb +144 -0
- data/lib/correios_exception.rb +11 -0
- data/lib/correios_gem.rb +186 -0
- data/lib/credentials.rb +27 -0
- data/lib/pricefier/client.rb +20 -0
- data/lib/pricefier/helper.rb +72 -0
- data/lib/pricefier/requests/calculate_deadline.rb +100 -0
- data/lib/pricefier/requests/calculate_deadline_with_date.rb +102 -0
- data/lib/pricefier/requests/calculate_deadline_with_restrictions.rb +102 -0
- data/lib/pricefier/requests/calculate_price.rb +123 -0
- data/lib/pricefier/requests/calculate_price_deadline.rb +138 -0
- data/lib/pricefier/requests/calculate_price_deadline_with_date.rb +142 -0
- data/lib/pricefier/requests/calculate_price_deadline_with_restrictions.rb +142 -0
- data/lib/pricefier/requests/calculate_price_fac.rb +106 -0
- data/lib/pricefier/requests/calculate_price_with_date.rb +125 -0
- data/lib/pricefier/requests/list_services.rb +87 -0
- data/lib/pricefier/requests/list_services_star.rb +87 -0
- data/lib/reverse_logistics/client.rb +34 -0
- data/lib/reverse_logistics/helper.rb +95 -0
- data/lib/reverse_logistics/requests/calculate_ticket_number_check_digit.rb +66 -0
- data/lib/reverse_logistics/requests/cancel_shipping.rb +70 -0
- data/lib/reverse_logistics/requests/create_shippings.rb +166 -0
- data/lib/reverse_logistics/requests/create_shippings_with_collection.rb +152 -0
- data/lib/reverse_logistics/requests/request_ticket_numbers.rb +90 -0
- data/lib/reverse_logistics/requests/track_shipping.rb +121 -0
- data/lib/reverse_logistics/requests/track_shippings_by_date.rb +133 -0
- data/lib/sigep/client.rb +29 -0
- data/lib/sigep/helper.rb +234 -0
- data/lib/sigep/requests/calculate_label_number_check_digit.rb +72 -0
- data/lib/sigep/requests/cancel_shipping.rb +72 -0
- data/lib/sigep/requests/check_card_status.rb +69 -0
- data/lib/sigep/requests/check_service_availability.rb +91 -0
- data/lib/sigep/requests/create_shippings.rb +70 -0
- data/lib/sigep/requests/request_label_numbers.rb +76 -0
- data/lib/sigep/requests/request_shippings_xml.rb +208 -0
- data/lib/sigep/requests/search_available_additional_services.rb +62 -0
- data/lib/sigep/requests/search_customer.rb +129 -0
- data/lib/sigep/requests/search_zip_code.rb +63 -0
- data/lib/sigep/requests/track_shippings.rb +145 -0
- metadata +145 -0
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'savon'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
require_relative '../client'
|
5
|
+
require_relative '../helper'
|
6
|
+
require_relative '../../correios_exception.rb'
|
7
|
+
|
8
|
+
module Correios
|
9
|
+
module Pricefier
|
10
|
+
class ListServicesSTAR < CorreiosException
|
11
|
+
HELPER = Helper.new
|
12
|
+
CLIENT = Client.new
|
13
|
+
|
14
|
+
def initialize(data = {})
|
15
|
+
@show_request = data[:show_request]
|
16
|
+
super()
|
17
|
+
end
|
18
|
+
|
19
|
+
def request
|
20
|
+
puts xml if @show_request == true
|
21
|
+
begin
|
22
|
+
format_response(CLIENT.client.call(:calc_preco,
|
23
|
+
soap_action: 'http://tempuri.org/ListaServicosSTAR',
|
24
|
+
xml: xml).to_hash)
|
25
|
+
rescue Savon::SOAPFault => error
|
26
|
+
generate_exception(error)
|
27
|
+
rescue Savon::HTTPError => error
|
28
|
+
if error.http.code == 401
|
29
|
+
generate_exception("Unauthorized (#{error.http.code}).")
|
30
|
+
end
|
31
|
+
generate_exception("Unknown HTTP error (#{error.http.code}).")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def xml
|
38
|
+
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
39
|
+
xml['soap'].Envelope(HELPER.namespaces) do
|
40
|
+
xml['soap'].Body do
|
41
|
+
xml['ns1'].ListaServicosSTAR
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end.doc.root.to_xml
|
45
|
+
end
|
46
|
+
|
47
|
+
def format_response(response)
|
48
|
+
response = response[:lista_servicos_star_response][:lista_servicos_star_result]
|
49
|
+
|
50
|
+
services = response[:servicos_calculo][:c_servicos_calculo]
|
51
|
+
services = [services] if services.is_a?(Hash)
|
52
|
+
|
53
|
+
formatted_services = []
|
54
|
+
services.each do |service|
|
55
|
+
formatted_services << format_service(service)
|
56
|
+
end
|
57
|
+
|
58
|
+
{
|
59
|
+
services: formatted_services
|
60
|
+
}
|
61
|
+
end
|
62
|
+
|
63
|
+
def format_service(service)
|
64
|
+
if service[:erro].to_i == 0
|
65
|
+
{
|
66
|
+
code: service[:codigo],
|
67
|
+
description: service[:descricao].strip,
|
68
|
+
calculate_price: HELPER.convert_string_to_bool(
|
69
|
+
service[:calcula_preco]
|
70
|
+
),
|
71
|
+
calculate_deadline: HELPER.convert_string_to_bool(
|
72
|
+
service[:calcula_prazo]
|
73
|
+
)
|
74
|
+
}
|
75
|
+
else
|
76
|
+
{
|
77
|
+
code: service[:codigo],
|
78
|
+
error: {
|
79
|
+
code: service[:erro],
|
80
|
+
description: service[:msg_erro]
|
81
|
+
}
|
82
|
+
}
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'savon'
|
2
|
+
|
3
|
+
module Correios
|
4
|
+
module ReverseLogistics
|
5
|
+
class Client
|
6
|
+
def client
|
7
|
+
credentials = Correios.credentials
|
8
|
+
|
9
|
+
Savon.client(
|
10
|
+
wsdl: wsdl,
|
11
|
+
basic_auth: [
|
12
|
+
credentials.reverse_logistics_user,
|
13
|
+
credentials.reverse_logistics_password
|
14
|
+
]
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def wsdl
|
21
|
+
if test_env?
|
22
|
+
'https://apphom.correios.com.br/logisticaReversaWS/logisticaReversaService/logisticaReversaWS?wsdl'
|
23
|
+
else
|
24
|
+
'https://cws.correios.com.br/logisticaReversaWS/logisticaReversaService/logisticaReversaWS?wsdl'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_env?
|
29
|
+
(defined?(Rails) && ENV['RAILS_ENV'].in?(%w[test development]) ||
|
30
|
+
ENV['GEM_ENV'].in?(%w[test development]))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
module Correios
|
4
|
+
module ReverseLogistics
|
5
|
+
class Helper
|
6
|
+
def namespaces
|
7
|
+
{
|
8
|
+
'xmlns:soap' => 'http://schemas.xmlsoap.org/soap/envelope/',
|
9
|
+
'xmlns:ns1' => 'http://service.logisticareversa.correios.com.br/'
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
def bool_to_string(bool)
|
14
|
+
'S' if bool
|
15
|
+
'N'
|
16
|
+
end
|
17
|
+
|
18
|
+
def bool_to_int(bool)
|
19
|
+
1 if bool
|
20
|
+
0
|
21
|
+
end
|
22
|
+
|
23
|
+
def deadline(value, type)
|
24
|
+
if type == :authorization
|
25
|
+
return value if value.is_a?(Numeric)
|
26
|
+
|
27
|
+
Date.today - value
|
28
|
+
else
|
29
|
+
return (Date.today + value).strftime('%d/%m/%Y') if value.is_a?(Numeric)
|
30
|
+
|
31
|
+
value.strftime('%d/%m/%Y')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def shipping_type(type)
|
36
|
+
case type
|
37
|
+
when :authorization
|
38
|
+
'A'
|
39
|
+
when :pickup
|
40
|
+
'C'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def shipping_type_inverse(type)
|
45
|
+
case type
|
46
|
+
when 'A'
|
47
|
+
:authorization
|
48
|
+
when 'C'
|
49
|
+
:pickup
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def ticket_type(type)
|
54
|
+
case type
|
55
|
+
when :authorization
|
56
|
+
'AP'
|
57
|
+
when :pickup
|
58
|
+
'LR'
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def additional_services(services)
|
63
|
+
nil if services.nil?
|
64
|
+
|
65
|
+
services_string = ''
|
66
|
+
services.each do |service|
|
67
|
+
services_string += "#{service},"
|
68
|
+
end
|
69
|
+
services_string
|
70
|
+
end
|
71
|
+
|
72
|
+
def convert_string_to_date(date)
|
73
|
+
Date.strptime(date, '%d/%m/%Y')
|
74
|
+
end
|
75
|
+
|
76
|
+
def tracking_result_type(result_type)
|
77
|
+
case result_type
|
78
|
+
when :last_event
|
79
|
+
'U'
|
80
|
+
when :all_events
|
81
|
+
'H'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def convert_string_to_date_time(date, time)
|
86
|
+
time = time.strftime('%H:%M:%S')
|
87
|
+
Time.strptime("#{date} #{time}", '%d-%m-%Y %H:%M:%S')
|
88
|
+
end
|
89
|
+
|
90
|
+
def convert_date_to_string(date)
|
91
|
+
date.strftime('%d/%m/%Y')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'savon'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
require_relative '../client'
|
5
|
+
require_relative '../helper'
|
6
|
+
require_relative '../../correios_exception.rb'
|
7
|
+
|
8
|
+
module Correios
|
9
|
+
module ReverseLogistics
|
10
|
+
class CalculateTicketNumberCheckDigit < CorreiosException
|
11
|
+
HELPER = Helper.new
|
12
|
+
CLIENT = Client.new
|
13
|
+
|
14
|
+
def initialize(data = {})
|
15
|
+
@show_request = data[:show_request]
|
16
|
+
@ticket_number = data[:ticket_number]
|
17
|
+
super()
|
18
|
+
end
|
19
|
+
|
20
|
+
def request
|
21
|
+
puts xml if @show_request == true
|
22
|
+
begin
|
23
|
+
format_response(CLIENT.client.call(:calcular_digito_verificador,
|
24
|
+
soap_action: '',
|
25
|
+
xml: xml).to_hash)
|
26
|
+
rescue Savon::SOAPFault => error
|
27
|
+
generate_exception(error)
|
28
|
+
rescue Savon::HTTPError => error
|
29
|
+
if error.http.code == 401
|
30
|
+
generate_exception("Unauthorized (#{error.http.code}).")
|
31
|
+
end
|
32
|
+
generate_exception("Unknown HTTP error (#{error.http.code}).")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def xml
|
39
|
+
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
40
|
+
xml['soap'].Envelope(HELPER.namespaces) do
|
41
|
+
xml['soap'].Body do
|
42
|
+
xml['ns1'].calcularDigitoVerificador do
|
43
|
+
parent_namespace = xml.parent.namespace
|
44
|
+
xml.parent.namespace = nil
|
45
|
+
|
46
|
+
xml.numero @ticket_number
|
47
|
+
|
48
|
+
xml.parent.namespace = parent_namespace
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end.doc.root.to_xml
|
53
|
+
end
|
54
|
+
|
55
|
+
def format_response(response)
|
56
|
+
response = response[:calcular_digito_verificador_response][:calcular_digito_verificador]
|
57
|
+
generate_exception(response[:msg_erro]) if response[:cod_erro] != '0'
|
58
|
+
|
59
|
+
{
|
60
|
+
digit_checker: response[:digito],
|
61
|
+
ticket_number: response[:numero]
|
62
|
+
}
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'savon'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
require_relative '../client'
|
5
|
+
require_relative '../helper'
|
6
|
+
require_relative '../../correios_exception.rb'
|
7
|
+
|
8
|
+
module Correios
|
9
|
+
module ReverseLogistics
|
10
|
+
class CancelShipping < CorreiosException
|
11
|
+
HELPER = Helper.new
|
12
|
+
CLIENT = Client.new
|
13
|
+
|
14
|
+
def initialize(data = {})
|
15
|
+
@credentials = Correios.credentials
|
16
|
+
|
17
|
+
@ticket_number = data[:ticket_number]
|
18
|
+
@type = data[:type]
|
19
|
+
super()
|
20
|
+
end
|
21
|
+
|
22
|
+
def request
|
23
|
+
puts xml if @show_request == true
|
24
|
+
begin
|
25
|
+
format_response(CLIENT.client.call(:cancelar_pedido,
|
26
|
+
soap_action: '',
|
27
|
+
xml: xml).to_hash)
|
28
|
+
rescue Savon::SOAPFault => error
|
29
|
+
generate_exception(error)
|
30
|
+
rescue Savon::HTTPError => error
|
31
|
+
if error.http.code == 401
|
32
|
+
generate_exception("Unauthorized (#{error.http.code}).")
|
33
|
+
end
|
34
|
+
generate_exception("Unknown HTTP error (#{error.http.code}).")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def xml
|
41
|
+
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
42
|
+
xml['soap'].Envelope(HELPER.namespaces) do
|
43
|
+
xml['soap'].Body do
|
44
|
+
xml['ns1'].cancelarPedido do
|
45
|
+
parent_namespace = xml.parent.namespace
|
46
|
+
xml.parent.namespace = nil
|
47
|
+
|
48
|
+
xml.codAdministrativo @credentials.administrative_code
|
49
|
+
xml.numeroPedido @ticket_number
|
50
|
+
xml.tipo HELPER.shipping_type(@type)
|
51
|
+
|
52
|
+
xml.parent.namespace = parent_namespace
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end.doc.root.to_xml
|
57
|
+
end
|
58
|
+
|
59
|
+
def format_response(response)
|
60
|
+
response = response[:cancelar_pedido_response][:cancelar_pedido]
|
61
|
+
generate_exception(response[:msg_erro]) if response[:cod_erro].to_i != 0
|
62
|
+
|
63
|
+
{
|
64
|
+
ticket_number: response[:objeto_postal][:numero_pedido],
|
65
|
+
status: response[:objeto_postal][:status_pedido]
|
66
|
+
}
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,166 @@
|
|
1
|
+
require 'savon'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
require_relative '../client'
|
5
|
+
require_relative '../helper'
|
6
|
+
require_relative '../../correios_exception.rb'
|
7
|
+
|
8
|
+
module Correios
|
9
|
+
module ReverseLogistics
|
10
|
+
class CreateShippings < CorreiosException
|
11
|
+
HELPER = Helper.new
|
12
|
+
CLIENT = Client.new
|
13
|
+
|
14
|
+
def initialize(data = {})
|
15
|
+
@credentials = Correios.credentials
|
16
|
+
|
17
|
+
@show_request = data[:show_request]
|
18
|
+
@receiver = data[:receiver]
|
19
|
+
@service_code = data[:service_code]
|
20
|
+
@shippings = data[:shippings]
|
21
|
+
super()
|
22
|
+
end
|
23
|
+
|
24
|
+
def request
|
25
|
+
puts xml if @show_request == true
|
26
|
+
begin
|
27
|
+
format_response(CLIENT.client.call(:solicitar_postagem_reversa,
|
28
|
+
soap_action: '',
|
29
|
+
xml: xml).to_hash)
|
30
|
+
rescue Savon::SOAPFault => error
|
31
|
+
generate_exception(error)
|
32
|
+
rescue Savon::HTTPError => error
|
33
|
+
if error.http.code == 401
|
34
|
+
generate_exception("Unauthorized (#{error.http.code}).")
|
35
|
+
end
|
36
|
+
generate_exception("Unknown HTTP error (#{error.http.code}).")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def xml
|
43
|
+
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
44
|
+
xml['soap'].Envelope(HELPER.namespaces) do
|
45
|
+
xml['soap'].Body do
|
46
|
+
xml['ns1'].solicitarPostagemReversa do
|
47
|
+
parent_namespace = xml.parent.namespace
|
48
|
+
xml.parent.namespace = nil
|
49
|
+
|
50
|
+
xml.codAdministrativo @credentials.administrative_code
|
51
|
+
xml.cartao @credentials.card
|
52
|
+
xml.codigo_servico @service_code
|
53
|
+
xml.destinatario do
|
54
|
+
receiver_address = @receiver[:address]
|
55
|
+
xml.nome @receiver[:name]
|
56
|
+
xml.ddd @receiver[:phone][0, 2]
|
57
|
+
xml.telefone @receiver[:phone][2, @receiver[:phone].length - 1]
|
58
|
+
xml.email @receiver[:email]
|
59
|
+
xml.logradouro receiver_address[:street]
|
60
|
+
xml.numero receiver_address[:number]
|
61
|
+
xml.complemento receiver_address[:additional]
|
62
|
+
xml.bairro receiver_address[:neighborhood]
|
63
|
+
xml.cidade receiver_address[:city]
|
64
|
+
xml.uf receiver_address[:state]
|
65
|
+
xml.cep receiver_address[:zip_code]
|
66
|
+
xml.referencia
|
67
|
+
end
|
68
|
+
@shippings.each do |shipping|
|
69
|
+
goods = shipping[:goods] || []
|
70
|
+
objects = shipping[:objects] || [{}]
|
71
|
+
xml.coletas_solicitadas do
|
72
|
+
xml.tipo HELPER.shipping_type(shipping[:type])
|
73
|
+
xml.numero shipping[:ticket_number]
|
74
|
+
xml.id_cliente shipping[:code]
|
75
|
+
xml.ag HELPER.deadline(shipping[:deadline], shipping[:type])
|
76
|
+
xml.cartao @credentials.card
|
77
|
+
xml.valor_declarado shipping[:_value]
|
78
|
+
xml.servico_adicional HELPER.additional_services(
|
79
|
+
shipping[:additional_services]
|
80
|
+
)
|
81
|
+
xml.descricao shipping[:description]
|
82
|
+
xml.ar HELPER.bool_to_int(shipping[:receipt_notification])
|
83
|
+
xml.cklist shipping[:check_list]
|
84
|
+
xml.documento shipping[:document]
|
85
|
+
xml.remetente do
|
86
|
+
sender = shipping[:sender]
|
87
|
+
sender_address = shipping[:sender][:address]
|
88
|
+
xml.nome sender[:name]
|
89
|
+
xml.ddd sender[:phone][0, 2]
|
90
|
+
xml.telefone sender[:phone][2, sender[:phone].length - 1]
|
91
|
+
xml.ddd_celular sender[:cellphone][0, 2]
|
92
|
+
xml.celular sender[:cellphone][2, sender[:phone].length - 1]
|
93
|
+
xml.email sender[:email]
|
94
|
+
xml.sms HELPER.bool_to_string(sender[:send_sms])
|
95
|
+
xml.identificacao sender[:document]
|
96
|
+
xml.logradouro sender_address[:street]
|
97
|
+
xml.numero sender_address[:number]
|
98
|
+
xml.complemento sender_address[:additional]
|
99
|
+
xml.bairro sender_address[:neighborhood]
|
100
|
+
xml.referencia
|
101
|
+
xml.cidade sender_address[:city]
|
102
|
+
xml.uf sender_address[:state]
|
103
|
+
xml.cep sender_address[:zip_code]
|
104
|
+
end
|
105
|
+
goods.each do |good|
|
106
|
+
xml.produto do
|
107
|
+
xml.codigo good[:code]
|
108
|
+
xml.tipo good[:type]
|
109
|
+
xml.qtd good[:amount]
|
110
|
+
end
|
111
|
+
end
|
112
|
+
objects.each do |object|
|
113
|
+
xml.obj_col do
|
114
|
+
xml.item 1
|
115
|
+
xml.id object[:id]
|
116
|
+
xml.desc object[:description]
|
117
|
+
xml.entrega object[:number]
|
118
|
+
xml.num
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
xml.parent.namespace = parent_namespace
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end.doc.root.to_xml
|
129
|
+
end
|
130
|
+
|
131
|
+
def format_response(response)
|
132
|
+
response = response[:solicitar_postagem_reversa_response][:solicitar_postagem_reversa]
|
133
|
+
generate_exception(response[:msg_erro]) if response[:cod_erro].to_i != 0
|
134
|
+
|
135
|
+
shippings = response[:resultado_solicitacao]
|
136
|
+
shippings = [shippings] if shippings.is_a?(Hash)
|
137
|
+
|
138
|
+
formatted_shippings = []
|
139
|
+
shippings.each do |shipping|
|
140
|
+
formatted_shippings << format_shipping(shipping)
|
141
|
+
end
|
142
|
+
|
143
|
+
{ shippings: formatted_shippings }
|
144
|
+
end
|
145
|
+
|
146
|
+
def format_shipping(shipping)
|
147
|
+
if shipping[:codigo_erro].to_i.zero?
|
148
|
+
{
|
149
|
+
type: HELPER.shipping_type_inverse(shipping[:tipo]),
|
150
|
+
code: shipping[:id_cliente],
|
151
|
+
ticket_number: shipping[:numero_coleta],
|
152
|
+
label_number: shipping[:numero_etiqueta],
|
153
|
+
object_id: shipping[:id_obj],
|
154
|
+
deadline: HELPER.convert_string_to_date(shipping[:prazo])
|
155
|
+
}
|
156
|
+
else
|
157
|
+
{
|
158
|
+
type: HELPER.shipping_type_inverse(shipping[:tipo]),
|
159
|
+
code: shipping[:id_cliente],
|
160
|
+
error: shipping[:descricao_erro]
|
161
|
+
}
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|