deliveries 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/workflows/main.yml +19 -0
- data/.gitignore +12 -0
- data/.rspec +3 -0
- data/.rubocop.yml +34 -0
- data/CHANGELOG.md +13 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +127 -0
- data/LICENSE.txt +21 -0
- data/README.md +207 -0
- data/Rakefile +12 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/deliveries.gemspec +36 -0
- data/lib/deliveries/address.rb +71 -0
- data/lib/deliveries/checkpoint.rb +12 -0
- data/lib/deliveries/collection_point.rb +45 -0
- data/lib/deliveries/courier.rb +69 -0
- data/lib/deliveries/couriers/correos_express/address.rb +31 -0
- data/lib/deliveries/couriers/correos_express/collection_points/search/format_response.rb +82 -0
- data/lib/deliveries/couriers/correos_express/collection_points/search.rb +56 -0
- data/lib/deliveries/couriers/correos_express/labels/generate.rb +68 -0
- data/lib/deliveries/couriers/correos_express/pickups/create/defaults.rb +60 -0
- data/lib/deliveries/couriers/correos_express/pickups/create/format_params.rb +95 -0
- data/lib/deliveries/couriers/correos_express/pickups/create.rb +66 -0
- data/lib/deliveries/couriers/correos_express/pickups/cutoff_time/format_params.rb +40 -0
- data/lib/deliveries/couriers/correos_express/pickups/cutoff_time.rb +61 -0
- data/lib/deliveries/couriers/correos_express/pickups/trace/correos.test.wsdl +163 -0
- data/lib/deliveries/couriers/correos_express/pickups/trace/correos.wsdl +163 -0
- data/lib/deliveries/couriers/correos_express/pickups/trace/format_response.rb +71 -0
- data/lib/deliveries/couriers/correos_express/pickups/trace.rb +49 -0
- data/lib/deliveries/couriers/correos_express/shipments/create/defaults.rb +80 -0
- data/lib/deliveries/couriers/correos_express/shipments/create/format_params.rb +99 -0
- data/lib/deliveries/couriers/correos_express/shipments/create.rb +101 -0
- data/lib/deliveries/couriers/correos_express/shipments/trace/format_response.rb +67 -0
- data/lib/deliveries/couriers/correos_express/shipments/trace.rb +65 -0
- data/lib/deliveries/couriers/correos_express.rb +162 -0
- data/lib/deliveries/couriers/dummy.rb +106 -0
- data/lib/deliveries/couriers/mondial_relay/address.rb +31 -0
- data/lib/deliveries/couriers/mondial_relay/collection_points/search/format_response.rb +103 -0
- data/lib/deliveries/couriers/mondial_relay/labels/generate.rb +40 -0
- data/lib/deliveries/couriers/mondial_relay/pickups/create/format_params.rb +57 -0
- data/lib/deliveries/couriers/mondial_relay/shipments/create/defaults.rb +96 -0
- data/lib/deliveries/couriers/mondial_relay/shipments/create/format_params.rb +68 -0
- data/lib/deliveries/couriers/mondial_relay/shipments/create.rb +36 -0
- data/lib/deliveries/couriers/mondial_relay/shipments/trace/format_response.rb +94 -0
- data/lib/deliveries/couriers/mondial_relay/shipments/trace.rb +47 -0
- data/lib/deliveries/couriers/mondial_relay/status_codes.rb +105 -0
- data/lib/deliveries/couriers/mondial_relay.rb +189 -0
- data/lib/deliveries/couriers/mondial_relay_dual/address.rb +31 -0
- data/lib/deliveries/couriers/mondial_relay_dual/pickups/create/format_params.rb +39 -0
- data/lib/deliveries/couriers/mondial_relay_dual/shipments/create/format_params.rb +101 -0
- data/lib/deliveries/couriers/mondial_relay_dual/shipments/create.rb +133 -0
- data/lib/deliveries/couriers/mondial_relay_dual.rb +105 -0
- data/lib/deliveries/couriers/spring/address.rb +23 -0
- data/lib/deliveries/couriers/spring/labels/generate.rb +33 -0
- data/lib/deliveries/couriers/spring/request.rb +43 -0
- data/lib/deliveries/couriers/spring/shipments/create/defaults.rb +73 -0
- data/lib/deliveries/couriers/spring/shipments/create/format_params.rb +77 -0
- data/lib/deliveries/couriers/spring/shipments/create.rb +45 -0
- data/lib/deliveries/couriers/spring/shipments/trace/format_response.rb +79 -0
- data/lib/deliveries/couriers/spring/shipments/trace.rb +29 -0
- data/lib/deliveries/couriers/spring.rb +84 -0
- data/lib/deliveries/couriers/ups/collection_points/search.rb +142 -0
- data/lib/deliveries/couriers/ups/json_request.rb +40 -0
- data/lib/deliveries/couriers/ups/labels/generate.rb +72 -0
- data/lib/deliveries/couriers/ups/shipments/create.rb +210 -0
- data/lib/deliveries/couriers/ups/shipments/trace.rb +79 -0
- data/lib/deliveries/couriers/ups.rb +122 -0
- data/lib/deliveries/couriers.rb +14 -0
- data/lib/deliveries/delivery.rb +20 -0
- data/lib/deliveries/errors.rb +22 -0
- data/lib/deliveries/label.rb +20 -0
- data/lib/deliveries/label_utils.rb +67 -0
- data/lib/deliveries/labels.rb +40 -0
- data/lib/deliveries/pickup.rb +15 -0
- data/lib/deliveries/shipment.rb +15 -0
- data/lib/deliveries/tracking_info.rb +29 -0
- data/lib/deliveries/version.rb +5 -0
- data/lib/deliveries.rb +63 -0
- metadata +240 -0
@@ -0,0 +1,163 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:axis2="seguimiento"
|
3
|
+
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
|
4
|
+
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:ns1="http://org.apache.axis2/xsd"
|
5
|
+
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
|
6
|
+
xmlns:ax21="http://seguimiento.recogida.ws.chx.es/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
7
|
+
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
8
|
+
xmlns:es.chx.ws.recogida.seguimiento="seguimiento.recogida.ws.chx.es" xmlns:ax22="http://ws.chx.es/xsd"
|
9
|
+
targetNamespace="seguimiento">
|
10
|
+
<wsdl:types>
|
11
|
+
<xs:schema xmlns:ax23="http://ws.chx.es/xsd" attributeFormDefault="qualified"
|
12
|
+
elementFormDefault="qualified" targetNamespace="http://seguimiento.recogida.ws.chx.es/xsd">
|
13
|
+
<xs:import namespace="http://ws.chx.es/xsd"/>
|
14
|
+
<xs:complexType name="RetornoSeguimientoRecogida">
|
15
|
+
<xs:complexContent>
|
16
|
+
<xs:extension base="ax22:RetornoAbstract">
|
17
|
+
<xs:sequence>
|
18
|
+
<xs:element minOccurs="0" name="cliente" nillable="true" type="xs:string"/>
|
19
|
+
<xs:element minOccurs="0" name="codPosRecogida" nillable="true"
|
20
|
+
type="xs:string"/>
|
21
|
+
<xs:element minOccurs="0" name="contactoRecogida" nillable="true"
|
22
|
+
type="xs:string"/>
|
23
|
+
<xs:element minOccurs="0" name="domRecogida" nillable="true"
|
24
|
+
type="xs:string"/>
|
25
|
+
<xs:element minOccurs="0" name="fecRecogida" nillable="true"
|
26
|
+
type="xs:string"/>
|
27
|
+
<xs:element minOccurs="0" name="importe" nillable="true" type="xs:string"/>
|
28
|
+
<xs:element minOccurs="0" name="kilos" nillable="true" type="xs:string"/>
|
29
|
+
<xs:element minOccurs="0" name="mercancia" nillable="true" type="xs:string"/>
|
30
|
+
<xs:element minOccurs="0" name="nifRecogida" nillable="true"
|
31
|
+
type="xs:string"/>
|
32
|
+
<xs:element minOccurs="0" name="nomRecogida" nillable="true"
|
33
|
+
type="xs:string"/>
|
34
|
+
<xs:element minOccurs="0" name="numBultos" nillable="true" type="xs:string"/>
|
35
|
+
<xs:element minOccurs="0" name="numBultosReales" nillable="true"
|
36
|
+
type="xs:string"/>
|
37
|
+
<xs:element minOccurs="0" name="observaciones" nillable="true"
|
38
|
+
type="xs:string"/>
|
39
|
+
<xs:element minOccurs="0" name="paisRecogida" nillable="true"
|
40
|
+
type="xs:string"/>
|
41
|
+
<xs:element minOccurs="0" name="pobRecogida" nillable="true"
|
42
|
+
type="xs:string"/>
|
43
|
+
<xs:element minOccurs="0" name="recogida" nillable="true" type="xs:string"/>
|
44
|
+
<xs:element minOccurs="0" name="referencia" nillable="true" type="xs:string"/>
|
45
|
+
<xs:element minOccurs="0" name="resultado" nillable="true" type="xs:string"/>
|
46
|
+
<xs:element maxOccurs="unbounded" minOccurs="0" name="situaciones"
|
47
|
+
nillable="true" type="ax21:Situacion"/>
|
48
|
+
<xs:element minOccurs="0" name="telefonoRecogida" nillable="true"
|
49
|
+
type="xs:string"/>
|
50
|
+
<xs:element minOccurs="0" name="tipoRecogida" nillable="true"
|
51
|
+
type="xs:string"/>
|
52
|
+
</xs:sequence>
|
53
|
+
</xs:extension>
|
54
|
+
</xs:complexContent>
|
55
|
+
</xs:complexType>
|
56
|
+
<xs:complexType name="Situacion">
|
57
|
+
<xs:sequence>
|
58
|
+
<xs:element minOccurs="0" name="ampliacion" nillable="true" type="xs:string"/>
|
59
|
+
<xs:element minOccurs="0" name="codMotivo" nillable="true" type="xs:string"/>
|
60
|
+
<xs:element minOccurs="0" name="codSituacion" nillable="true" type="xs:string"/>
|
61
|
+
<xs:element minOccurs="0" name="descMotivo" nillable="true" type="xs:string"/>
|
62
|
+
<xs:element minOccurs="0" name="descSituacion" nillable="true" type="xs:string"/>
|
63
|
+
<xs:element minOccurs="0" name="fecSistema" nillable="true" type="xs:string"/>
|
64
|
+
<xs:element minOccurs="0" name="fecSituacion" nillable="true" type="xs:string"/>
|
65
|
+
<xs:element minOccurs="0" name="usrSituacion" nillable="true" type="xs:string"/>
|
66
|
+
</xs:sequence>
|
67
|
+
</xs:complexType>
|
68
|
+
</xs:schema>
|
69
|
+
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified"
|
70
|
+
targetNamespace="http://ws.chx.es/xsd">
|
71
|
+
<xs:complexType name="RetornoAbstract">
|
72
|
+
<xs:sequence>
|
73
|
+
<xs:element minOccurs="0" name="codigoRetorno" type="xs:int"/>
|
74
|
+
<xs:element minOccurs="0" name="mensajeRetorno" nillable="true" type="xs:string"/>
|
75
|
+
</xs:sequence>
|
76
|
+
</xs:complexType>
|
77
|
+
</xs:schema>
|
78
|
+
<xs:schema xmlns:ax24="http://seguimiento.recogida.ws.chx.es/xsd" attributeFormDefault="qualified"
|
79
|
+
elementFormDefault="qualified" targetNamespace="seguimiento.recogida.ws.chx.es">
|
80
|
+
<xs:import namespace="http://seguimiento.recogida.ws.chx.es/xsd"/>
|
81
|
+
<xs:element name="seguimientoRecogida">
|
82
|
+
<xs:complexType>
|
83
|
+
<xs:sequence>
|
84
|
+
<xs:element minOccurs="0" name="solicitante" nillable="true" type="xs:string"/>
|
85
|
+
<xs:element minOccurs="0" name="dato" nillable="true" type="xs:string"/>
|
86
|
+
<xs:element minOccurs="0" name="password" nillable="true" type="xs:string"/>
|
87
|
+
<xs:element minOccurs="0" name="codCliente" nillable="true" type="xs:string"/>
|
88
|
+
<xs:element minOccurs="0" name="fecRecogida" nillable="true" type="xs:string"/>
|
89
|
+
</xs:sequence>
|
90
|
+
</xs:complexType>
|
91
|
+
</xs:element>
|
92
|
+
<xs:element name="seguimientoRecogidaResponse">
|
93
|
+
<xs:complexType>
|
94
|
+
<xs:sequence>
|
95
|
+
<xs:element minOccurs="0" name="return" nillable="true"
|
96
|
+
type="ax24:RetornoSeguimientoRecogida"/>
|
97
|
+
</xs:sequence>
|
98
|
+
</xs:complexType>
|
99
|
+
</xs:element>
|
100
|
+
</xs:schema>
|
101
|
+
</wsdl:types>
|
102
|
+
<wsdl:message name="seguimientoRecogidaRequest">
|
103
|
+
<wsdl:part name="parameters" element="es.chx.ws.recogida.seguimiento:seguimientoRecogida"/>
|
104
|
+
</wsdl:message>
|
105
|
+
<wsdl:message name="seguimientoRecogidaResponse">
|
106
|
+
<wsdl:part name="parameters"
|
107
|
+
element="es.chx.ws.recogida.seguimiento:seguimientoRecogidaResponse"/>
|
108
|
+
</wsdl:message>
|
109
|
+
<wsdl:portType name="SeguimientoRecogidaPortType">
|
110
|
+
<wsdl:operation name="seguimientoRecogida">
|
111
|
+
<wsdl:input message="axis2:seguimientoRecogidaRequest" wsaw:Action="urn:seguimientoRecogida"/>
|
112
|
+
<wsdl:output message="axis2:seguimientoRecogidaResponse"
|
113
|
+
wsaw:Action="urn:seguimientoRecogidaResponse"/>
|
114
|
+
</wsdl:operation>
|
115
|
+
</wsdl:portType>
|
116
|
+
<wsdl:binding name="SeguimientoRecogidaSoap11Binding" type="axis2:SeguimientoRecogidaPortType">
|
117
|
+
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
|
118
|
+
<wsdl:operation name="seguimientoRecogida">
|
119
|
+
<soap:operation soapAction="urn:seguimientoRecogida" style="document"/>
|
120
|
+
<wsdl:input>
|
121
|
+
<soap:body use="literal"/>
|
122
|
+
</wsdl:input>
|
123
|
+
<wsdl:output>
|
124
|
+
<soap:body use="literal"/>
|
125
|
+
</wsdl:output>
|
126
|
+
</wsdl:operation>
|
127
|
+
</wsdl:binding>
|
128
|
+
<wsdl:binding name="SeguimientoRecogidaSoap12Binding" type="axis2:SeguimientoRecogidaPortType">
|
129
|
+
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
|
130
|
+
<wsdl:operation name="seguimientoRecogida">
|
131
|
+
<soap12:operation soapAction="urn:seguimientoRecogida" style="document"/>
|
132
|
+
<wsdl:input>
|
133
|
+
<soap12:body use="literal"/>
|
134
|
+
</wsdl:input>
|
135
|
+
<wsdl:output>
|
136
|
+
<soap12:body use="literal"/>
|
137
|
+
</wsdl:output>
|
138
|
+
</wsdl:operation>
|
139
|
+
</wsdl:binding>
|
140
|
+
<wsdl:binding name="SeguimientoRecogidaHttpBinding" type="axis2:SeguimientoRecogidaPortType">
|
141
|
+
<http:binding verb="POST"/>
|
142
|
+
<wsdl:operation name="seguimientoRecogida">
|
143
|
+
<http:operation location="SeguimientoRecogida/seguimientoRecogida"/>
|
144
|
+
<wsdl:input>
|
145
|
+
<mime:content type="text/xml" part="seguimientoRecogida"/>
|
146
|
+
</wsdl:input>
|
147
|
+
<wsdl:output>
|
148
|
+
<mime:content type="text/xml" part="seguimientoRecogida"/>
|
149
|
+
</wsdl:output>
|
150
|
+
</wsdl:operation>
|
151
|
+
</wsdl:binding>
|
152
|
+
<wsdl:service name="SeguimientoRecogida">
|
153
|
+
<wsdl:port name="SeguimientoRecogidaHttpSoap11Endpoint" binding="axis2:SeguimientoRecogidaSoap11Binding">
|
154
|
+
<soap:address location="https://www.correosexpress.com/wspsc/services/SeguimientoRecogida"/>
|
155
|
+
</wsdl:port>
|
156
|
+
<wsdl:port name="SeguimientoRecogidaHttpSoap12Endpoint" binding="axis2:SeguimientoRecogidaSoap12Binding">
|
157
|
+
<soap12:address location="https://www.correosexpress.com/wspsc/services/SeguimientoRecogida"/>
|
158
|
+
</wsdl:port>
|
159
|
+
<wsdl:port name="SeguimientoRecogidaHttpEndpoint" binding="axis2:SeguimientoRecogidaHttpBinding">
|
160
|
+
<http:address location="https://www.correosexpress.com/wspsc/services/SeguimientoRecogida"/>
|
161
|
+
</wsdl:port>
|
162
|
+
</wsdl:service>
|
163
|
+
</wsdl:definitions>
|
@@ -0,0 +1,163 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:axis2="seguimiento"
|
3
|
+
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
|
4
|
+
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:ns1="http://org.apache.axis2/xsd"
|
5
|
+
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
|
6
|
+
xmlns:ax21="http://seguimiento.recogida.ws.chx.es/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
7
|
+
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
8
|
+
xmlns:es.chx.ws.recogida.seguimiento="seguimiento.recogida.ws.chx.es" xmlns:ax22="http://ws.chx.es/xsd"
|
9
|
+
targetNamespace="seguimiento">
|
10
|
+
<wsdl:types>
|
11
|
+
<xs:schema xmlns:ax23="http://ws.chx.es/xsd" attributeFormDefault="qualified"
|
12
|
+
elementFormDefault="qualified" targetNamespace="http://seguimiento.recogida.ws.chx.es/xsd">
|
13
|
+
<xs:import namespace="http://ws.chx.es/xsd"/>
|
14
|
+
<xs:complexType name="RetornoSeguimientoRecogida">
|
15
|
+
<xs:complexContent>
|
16
|
+
<xs:extension base="ax22:RetornoAbstract">
|
17
|
+
<xs:sequence>
|
18
|
+
<xs:element minOccurs="0" name="cliente" nillable="true" type="xs:string"/>
|
19
|
+
<xs:element minOccurs="0" name="codPosRecogida" nillable="true"
|
20
|
+
type="xs:string"/>
|
21
|
+
<xs:element minOccurs="0" name="contactoRecogida" nillable="true"
|
22
|
+
type="xs:string"/>
|
23
|
+
<xs:element minOccurs="0" name="domRecogida" nillable="true"
|
24
|
+
type="xs:string"/>
|
25
|
+
<xs:element minOccurs="0" name="fecRecogida" nillable="true"
|
26
|
+
type="xs:string"/>
|
27
|
+
<xs:element minOccurs="0" name="importe" nillable="true" type="xs:string"/>
|
28
|
+
<xs:element minOccurs="0" name="kilos" nillable="true" type="xs:string"/>
|
29
|
+
<xs:element minOccurs="0" name="mercancia" nillable="true" type="xs:string"/>
|
30
|
+
<xs:element minOccurs="0" name="nifRecogida" nillable="true"
|
31
|
+
type="xs:string"/>
|
32
|
+
<xs:element minOccurs="0" name="nomRecogida" nillable="true"
|
33
|
+
type="xs:string"/>
|
34
|
+
<xs:element minOccurs="0" name="numBultos" nillable="true" type="xs:string"/>
|
35
|
+
<xs:element minOccurs="0" name="numBultosReales" nillable="true"
|
36
|
+
type="xs:string"/>
|
37
|
+
<xs:element minOccurs="0" name="observaciones" nillable="true"
|
38
|
+
type="xs:string"/>
|
39
|
+
<xs:element minOccurs="0" name="paisRecogida" nillable="true"
|
40
|
+
type="xs:string"/>
|
41
|
+
<xs:element minOccurs="0" name="pobRecogida" nillable="true"
|
42
|
+
type="xs:string"/>
|
43
|
+
<xs:element minOccurs="0" name="recogida" nillable="true" type="xs:string"/>
|
44
|
+
<xs:element minOccurs="0" name="referencia" nillable="true" type="xs:string"/>
|
45
|
+
<xs:element minOccurs="0" name="resultado" nillable="true" type="xs:string"/>
|
46
|
+
<xs:element maxOccurs="unbounded" minOccurs="0" name="situaciones"
|
47
|
+
nillable="true" type="ax21:Situacion"/>
|
48
|
+
<xs:element minOccurs="0" name="telefonoRecogida" nillable="true"
|
49
|
+
type="xs:string"/>
|
50
|
+
<xs:element minOccurs="0" name="tipoRecogida" nillable="true"
|
51
|
+
type="xs:string"/>
|
52
|
+
</xs:sequence>
|
53
|
+
</xs:extension>
|
54
|
+
</xs:complexContent>
|
55
|
+
</xs:complexType>
|
56
|
+
<xs:complexType name="Situacion">
|
57
|
+
<xs:sequence>
|
58
|
+
<xs:element minOccurs="0" name="ampliacion" nillable="true" type="xs:string"/>
|
59
|
+
<xs:element minOccurs="0" name="codMotivo" nillable="true" type="xs:string"/>
|
60
|
+
<xs:element minOccurs="0" name="codSituacion" nillable="true" type="xs:string"/>
|
61
|
+
<xs:element minOccurs="0" name="descMotivo" nillable="true" type="xs:string"/>
|
62
|
+
<xs:element minOccurs="0" name="descSituacion" nillable="true" type="xs:string"/>
|
63
|
+
<xs:element minOccurs="0" name="fecSistema" nillable="true" type="xs:string"/>
|
64
|
+
<xs:element minOccurs="0" name="fecSituacion" nillable="true" type="xs:string"/>
|
65
|
+
<xs:element minOccurs="0" name="usrSituacion" nillable="true" type="xs:string"/>
|
66
|
+
</xs:sequence>
|
67
|
+
</xs:complexType>
|
68
|
+
</xs:schema>
|
69
|
+
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified"
|
70
|
+
targetNamespace="http://ws.chx.es/xsd">
|
71
|
+
<xs:complexType name="RetornoAbstract">
|
72
|
+
<xs:sequence>
|
73
|
+
<xs:element minOccurs="0" name="codigoRetorno" type="xs:int"/>
|
74
|
+
<xs:element minOccurs="0" name="mensajeRetorno" nillable="true" type="xs:string"/>
|
75
|
+
</xs:sequence>
|
76
|
+
</xs:complexType>
|
77
|
+
</xs:schema>
|
78
|
+
<xs:schema xmlns:ax24="http://seguimiento.recogida.ws.chx.es/xsd" attributeFormDefault="qualified"
|
79
|
+
elementFormDefault="qualified" targetNamespace="seguimiento.recogida.ws.chx.es">
|
80
|
+
<xs:import namespace="http://seguimiento.recogida.ws.chx.es/xsd"/>
|
81
|
+
<xs:element name="seguimientoRecogida">
|
82
|
+
<xs:complexType>
|
83
|
+
<xs:sequence>
|
84
|
+
<xs:element minOccurs="0" name="solicitante" nillable="true" type="xs:string"/>
|
85
|
+
<xs:element minOccurs="0" name="dato" nillable="true" type="xs:string"/>
|
86
|
+
<xs:element minOccurs="0" name="password" nillable="true" type="xs:string"/>
|
87
|
+
<xs:element minOccurs="0" name="codCliente" nillable="true" type="xs:string"/>
|
88
|
+
<xs:element minOccurs="0" name="fecRecogida" nillable="true" type="xs:string"/>
|
89
|
+
</xs:sequence>
|
90
|
+
</xs:complexType>
|
91
|
+
</xs:element>
|
92
|
+
<xs:element name="seguimientoRecogidaResponse">
|
93
|
+
<xs:complexType>
|
94
|
+
<xs:sequence>
|
95
|
+
<xs:element minOccurs="0" name="return" nillable="true"
|
96
|
+
type="ax24:RetornoSeguimientoRecogida"/>
|
97
|
+
</xs:sequence>
|
98
|
+
</xs:complexType>
|
99
|
+
</xs:element>
|
100
|
+
</xs:schema>
|
101
|
+
</wsdl:types>
|
102
|
+
<wsdl:message name="seguimientoRecogidaRequest">
|
103
|
+
<wsdl:part name="parameters" element="es.chx.ws.recogida.seguimiento:seguimientoRecogida"/>
|
104
|
+
</wsdl:message>
|
105
|
+
<wsdl:message name="seguimientoRecogidaResponse">
|
106
|
+
<wsdl:part name="parameters"
|
107
|
+
element="es.chx.ws.recogida.seguimiento:seguimientoRecogidaResponse"/>
|
108
|
+
</wsdl:message>
|
109
|
+
<wsdl:portType name="SeguimientoRecogidaPortType">
|
110
|
+
<wsdl:operation name="seguimientoRecogida">
|
111
|
+
<wsdl:input message="axis2:seguimientoRecogidaRequest" wsaw:Action="urn:seguimientoRecogida"/>
|
112
|
+
<wsdl:output message="axis2:seguimientoRecogidaResponse"
|
113
|
+
wsaw:Action="urn:seguimientoRecogidaResponse"/>
|
114
|
+
</wsdl:operation>
|
115
|
+
</wsdl:portType>
|
116
|
+
<wsdl:binding name="SeguimientoRecogidaSoap11Binding" type="axis2:SeguimientoRecogidaPortType">
|
117
|
+
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
|
118
|
+
<wsdl:operation name="seguimientoRecogida">
|
119
|
+
<soap:operation soapAction="urn:seguimientoRecogida" style="document"/>
|
120
|
+
<wsdl:input>
|
121
|
+
<soap:body use="literal"/>
|
122
|
+
</wsdl:input>
|
123
|
+
<wsdl:output>
|
124
|
+
<soap:body use="literal"/>
|
125
|
+
</wsdl:output>
|
126
|
+
</wsdl:operation>
|
127
|
+
</wsdl:binding>
|
128
|
+
<wsdl:binding name="SeguimientoRecogidaSoap12Binding" type="axis2:SeguimientoRecogidaPortType">
|
129
|
+
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
|
130
|
+
<wsdl:operation name="seguimientoRecogida">
|
131
|
+
<soap12:operation soapAction="urn:seguimientoRecogida" style="document"/>
|
132
|
+
<wsdl:input>
|
133
|
+
<soap12:body use="literal"/>
|
134
|
+
</wsdl:input>
|
135
|
+
<wsdl:output>
|
136
|
+
<soap12:body use="literal"/>
|
137
|
+
</wsdl:output>
|
138
|
+
</wsdl:operation>
|
139
|
+
</wsdl:binding>
|
140
|
+
<wsdl:binding name="SeguimientoRecogidaHttpBinding" type="axis2:SeguimientoRecogidaPortType">
|
141
|
+
<http:binding verb="POST"/>
|
142
|
+
<wsdl:operation name="seguimientoRecogida">
|
143
|
+
<http:operation location="SeguimientoRecogida/seguimientoRecogida"/>
|
144
|
+
<wsdl:input>
|
145
|
+
<mime:content type="text/xml" part="seguimientoRecogida"/>
|
146
|
+
</wsdl:input>
|
147
|
+
<wsdl:output>
|
148
|
+
<mime:content type="text/xml" part="seguimientoRecogida"/>
|
149
|
+
</wsdl:output>
|
150
|
+
</wsdl:operation>
|
151
|
+
</wsdl:binding>
|
152
|
+
<wsdl:service name="SeguimientoRecogida">
|
153
|
+
<wsdl:port name="SeguimientoRecogidaHttpSoap11Endpoint" binding="axis2:SeguimientoRecogidaSoap11Binding">
|
154
|
+
<soap:address location="https://www.correosexpress.com/wpsc/services/SeguimientoRecogida"/>
|
155
|
+
</wsdl:port>
|
156
|
+
<wsdl:port name="SeguimientoRecogidaHttpSoap12Endpoint" binding="axis2:SeguimientoRecogidaSoap12Binding">
|
157
|
+
<soap12:address location="https://www.correosexpress.com/wpsc/services/SeguimientoRecogida"/>
|
158
|
+
</wsdl:port>
|
159
|
+
<wsdl:port name="SeguimientoRecogidaHttpEndpoint" binding="axis2:SeguimientoRecogidaHttpBinding">
|
160
|
+
<http:address location="https://www.correosexpress.com/wpsc/services/SeguimientoRecogida"/>
|
161
|
+
</wsdl:port>
|
162
|
+
</wsdl:service>
|
163
|
+
</wsdl:definitions>
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'active_support/time'
|
2
|
+
|
3
|
+
module Deliveries
|
4
|
+
module Couriers
|
5
|
+
module CorreosExpress
|
6
|
+
module Pickups
|
7
|
+
class Trace
|
8
|
+
class FormatResponse
|
9
|
+
attr_accessor :response
|
10
|
+
|
11
|
+
def initialize(response:)
|
12
|
+
self.response = response
|
13
|
+
end
|
14
|
+
|
15
|
+
def execute
|
16
|
+
tracking_info_params = {}
|
17
|
+
|
18
|
+
checkpoints = formatted_checkpoints([response[:situaciones]].flatten)
|
19
|
+
|
20
|
+
tracking_info_params[:status] = checkpoints.last.try(:status)
|
21
|
+
tracking_info_params[:checkpoints] = checkpoints
|
22
|
+
tracking_info_params[:courier_id] = 'correos_express'
|
23
|
+
tracking_info_params[:tracking_code] = response[:recogida]
|
24
|
+
|
25
|
+
tracking_info_params
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def formatted_checkpoints(shipment_statuses)
|
31
|
+
checkpoints = []
|
32
|
+
shipment_statuses.each do |shipment_status|
|
33
|
+
checkpoints << formatted_checkpoint(shipment_status)
|
34
|
+
end
|
35
|
+
checkpoints.delete_if { |k, _v| k.status == :unknown_status }
|
36
|
+
.sort_by(&:tracked_at)
|
37
|
+
end
|
38
|
+
|
39
|
+
def formatted_checkpoint(shipment_status)
|
40
|
+
description = shipment_status[:desc_situacion].to_s
|
41
|
+
description += " (#{shipment_status[:desc_motivo]})" if shipment_status[:desc_motivo].present?
|
42
|
+
Deliveries::Checkpoint.new(
|
43
|
+
status: status_code(shipment_status[:desc_situacion]),
|
44
|
+
location: nil,
|
45
|
+
tracked_at: Time.zone.strptime((shipment_status[:fec_situacion]).to_s, '%d/%m/%Y %H:%M:%S'),
|
46
|
+
description: description
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
def status_code(code)
|
51
|
+
case code
|
52
|
+
when 'PDTE ASIGNAR'
|
53
|
+
:registered
|
54
|
+
when 'TRANSMITIDA'
|
55
|
+
:in_transit
|
56
|
+
when 'FALLIDA'
|
57
|
+
:delivery_failed
|
58
|
+
when 'ANULADA'
|
59
|
+
:canceled
|
60
|
+
when 'EFECTUADA'
|
61
|
+
:delivered
|
62
|
+
else
|
63
|
+
:unknown_status
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'savon'
|
2
|
+
|
3
|
+
module Deliveries
|
4
|
+
module Couriers
|
5
|
+
module CorreosExpress
|
6
|
+
module Pickups
|
7
|
+
class Trace
|
8
|
+
WSDL_LIVE_PATH = File.expand_path('../..', __dir__) + '/correos_express/pickups/trace/correos.wsdl'.freeze
|
9
|
+
WSDL_TEST_PATH = File.expand_path('../..', __dir__) + '/correos_express/pickups/trace/correos.test.wsdl'.freeze
|
10
|
+
|
11
|
+
attr_accessor :tracking_code
|
12
|
+
|
13
|
+
def initialize(tracking_code:)
|
14
|
+
self.tracking_code = tracking_code
|
15
|
+
end
|
16
|
+
|
17
|
+
def execute
|
18
|
+
params = {
|
19
|
+
'solicitante' => CorreosExpress.config(:client_code),
|
20
|
+
'dato' => tracking_code,
|
21
|
+
'password' => '',
|
22
|
+
'codCliente' => CorreosExpress.config(:pickup_receiver_code)
|
23
|
+
}
|
24
|
+
|
25
|
+
basic_auth = [
|
26
|
+
CorreosExpress.config(:username),
|
27
|
+
CorreosExpress.config(:password)
|
28
|
+
]
|
29
|
+
|
30
|
+
client = Savon.client wsdl: CorreosExpress.live? ? WSDL_LIVE_PATH : WSDL_TEST_PATH,
|
31
|
+
basic_auth: basic_auth,
|
32
|
+
logger: Deliveries.logger,
|
33
|
+
log: Deliveries.debug
|
34
|
+
|
35
|
+
response = client.call(:seguimiento_recogida, message: params)
|
36
|
+
|
37
|
+
response_result = response.body[:seguimiento_recogida_response][:return]
|
38
|
+
unless response_result && response_result[:recogida].present?
|
39
|
+
raise Deliveries::APIError,
|
40
|
+
response_result[:mensaje_retorno].to_s.strip
|
41
|
+
end
|
42
|
+
|
43
|
+
response_result
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module Deliveries
|
2
|
+
module Couriers
|
3
|
+
module CorreosExpress
|
4
|
+
module Shipments
|
5
|
+
class Create
|
6
|
+
module Defaults
|
7
|
+
PARAMS = {
|
8
|
+
solicitante: '1',
|
9
|
+
canalEntrada: '',
|
10
|
+
numEnvio: '',
|
11
|
+
ref: '',
|
12
|
+
fecha: '', # DDMMYYYY
|
13
|
+
codRte: '',
|
14
|
+
nomRte: '',
|
15
|
+
nifRte: '',
|
16
|
+
dirRte: '',
|
17
|
+
pobRte: '',
|
18
|
+
codPosNacRte: '',
|
19
|
+
paisISORte: '',
|
20
|
+
codPosIntRte: '',
|
21
|
+
contacRte: '',
|
22
|
+
telefRte: '',
|
23
|
+
emailRte: '',
|
24
|
+
codDest: '',
|
25
|
+
nomDest: '',
|
26
|
+
nifDest: '',
|
27
|
+
dirDest: '',
|
28
|
+
pobDest: '',
|
29
|
+
codPosNacDest: '',
|
30
|
+
paisISODest: '',
|
31
|
+
codPosIntDest: '',
|
32
|
+
contacDest: '',
|
33
|
+
telefDest: '',
|
34
|
+
emailDest: '',
|
35
|
+
contacOtrs: '',
|
36
|
+
telefOtrs: '',
|
37
|
+
emailOtrs: '',
|
38
|
+
observac: '',
|
39
|
+
numBultos: '1',
|
40
|
+
kilos: '1',
|
41
|
+
volumen: '',
|
42
|
+
alto: '',
|
43
|
+
largo: '',
|
44
|
+
ancho: '',
|
45
|
+
producto: '63',
|
46
|
+
portes: 'P',
|
47
|
+
reembolso: '',
|
48
|
+
entrSabado: '',
|
49
|
+
seguro: '',
|
50
|
+
numEnvioVuelta: '',
|
51
|
+
listaBultos: [
|
52
|
+
{
|
53
|
+
alto: '',
|
54
|
+
ancho: '',
|
55
|
+
codBultoCli: '',
|
56
|
+
codUnico: '',
|
57
|
+
descripcion: '',
|
58
|
+
kilos: '',
|
59
|
+
largo: '',
|
60
|
+
observaciones: '',
|
61
|
+
orden: '1',
|
62
|
+
referencia: '',
|
63
|
+
volumen: ''
|
64
|
+
}
|
65
|
+
],
|
66
|
+
codDirecDestino: '',
|
67
|
+
password: '',
|
68
|
+
listaInformacionAdicional: [
|
69
|
+
{
|
70
|
+
tipoEtiqueta: '1', # 1 PDF, 2 ZPL
|
71
|
+
etiquetaPDF: ''
|
72
|
+
}
|
73
|
+
]
|
74
|
+
}.freeze
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
module Deliveries
|
2
|
+
module Couriers
|
3
|
+
module CorreosExpress
|
4
|
+
module Shipments
|
5
|
+
class Create
|
6
|
+
class FormatParams
|
7
|
+
attr_accessor :sender, :receiver, :collection_point, :shipment_date,
|
8
|
+
:parcels, :reference_code, :remarks
|
9
|
+
|
10
|
+
NATIONAL_COUNTRY = :es
|
11
|
+
|
12
|
+
def initialize(sender:, receiver:, collection_point:, parcels:,
|
13
|
+
reference_code:, shipment_date:, remarks:)
|
14
|
+
self.sender = sender
|
15
|
+
self.receiver = receiver
|
16
|
+
self.collection_point = collection_point
|
17
|
+
self.parcels = parcels
|
18
|
+
self.reference_code = reference_code
|
19
|
+
self.shipment_date = shipment_date
|
20
|
+
self.remarks = remarks
|
21
|
+
end
|
22
|
+
|
23
|
+
def execute
|
24
|
+
params = {
|
25
|
+
solicitante: CorreosExpress.config(:client_code),
|
26
|
+
codRte: CorreosExpress.config(:shipment_sender_code),
|
27
|
+
ref: reference_code,
|
28
|
+
fecha: format_date(shipment_date),
|
29
|
+
nomRte: sender.name,
|
30
|
+
dirRte: sender.street,
|
31
|
+
pobRte: sender.city,
|
32
|
+
paisISORte: sender.country.to_s,
|
33
|
+
contacRte: sender.name,
|
34
|
+
telefRte: sender.phone,
|
35
|
+
emailRte: sender.email,
|
36
|
+
nomDest: receiver.name,
|
37
|
+
dirDest: receiver.street,
|
38
|
+
pobDest: receiver.city,
|
39
|
+
paisISODest: receiver.country.to_s,
|
40
|
+
contacDest: receiver.name,
|
41
|
+
telefDest: receiver.phone,
|
42
|
+
emailDest: receiver.email,
|
43
|
+
numBultos: parcels.to_s,
|
44
|
+
observac: remarks&.truncate(50, omission: '')
|
45
|
+
}
|
46
|
+
|
47
|
+
if collection_point.present?
|
48
|
+
params = params.merge(
|
49
|
+
codDirecDestino: collection_point.point_id
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
params = if national_country?(sender.country)
|
54
|
+
params.merge(codPosNacRte: format_postcode(sender.postcode, sender.country))
|
55
|
+
else
|
56
|
+
params.merge(codPosIntRte: format_postcode(sender.postcode, sender.country))
|
57
|
+
end
|
58
|
+
|
59
|
+
params = if national_country?(receiver.country)
|
60
|
+
params.merge(codPosNacDest: format_postcode(receiver.postcode, receiver.country))
|
61
|
+
else
|
62
|
+
params.merge(codPosIntDest: format_postcode(receiver.postcode, receiver.country))
|
63
|
+
end
|
64
|
+
|
65
|
+
unless CorreosExpress.test?
|
66
|
+
custom_product = CorreosExpress.config("countries.#{receiver.country.to_s.downcase}.product")
|
67
|
+
params[:producto] = custom_product if custom_product
|
68
|
+
end
|
69
|
+
|
70
|
+
defaults = Defaults::PARAMS
|
71
|
+
|
72
|
+
defaults.merge(params).to_json
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def format_date(date)
|
78
|
+
raise Deliveries::Error if date.blank?
|
79
|
+
|
80
|
+
date.strftime('%d%m%Y')
|
81
|
+
end
|
82
|
+
|
83
|
+
def format_postcode(postcode, country)
|
84
|
+
if country.to_sym.downcase == :pt
|
85
|
+
postcode&.split('-')&.first
|
86
|
+
else
|
87
|
+
postcode
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def national_country?(country)
|
92
|
+
country.to_sym.downcase == NATIONAL_COUNTRY
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|