class CityboxApi::Shipments
module for shipments services
Public Class Methods
new()
click to toggle source
# File lib/citybox_api/shipments.rb, line 4 def initialize raise CityboxApi::INVALID_CREDENTIALS if CityboxApi.configuration.key == nil @user = CityboxApi.configuration.user @password = CityboxApi.configuration.key end
Public Instance Methods
allow_shipment(opts={})
click to toggle source
sent an allow shipping request => 'admitirEnvio' service
# File lib/citybox_api/shipments.rb, line 11 def allow_shipment opts={} server_url = "http://b2b.correos.cl:8008/ServicioAdmisionCEPExterno/cch/ws/enviosCEP/externo/implementacion/ServicioExternoAdmisionCEP.asmx" opts = check_shipment_opts opts xml = shipment_xml "admitirEnvio", opts begin xml_response = RestClient.post server_url, xml, content_type: "text/xml" json_response = Crack::XML.parse(xml_response) json_response["soap:Envelope"]["soap:Body"]["admitirEnvioResponse"]["admitirEnvioResult"] rescue => error return CityboxApi.catch_error(error) end end
cancel_shipment(opts={})
click to toggle source
send a cancel shipment request => 'anularEnvio' service
# File lib/citybox_api/shipments.rb, line 41 def cancel_shipment opts={} server_url = "http://b2b.correos.cl:8008/ServicioAnulacionExterno/cch/ws/enviosCEP/externo/implementacion/ServicioExternoAnulacionEnvio.asmx" #check params CityboxApi.check_params [ :shipment_number, :admission_code, :sender_code ], opts xml = "<?xml version='1.0' encoding='utf-8'?> <soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> <soap:Body> <anularEnvio xmlns='http://tempuri.org/'> <usuario>#{@user}</usuario> <contrasena>#{@password}</contrasena> <numeroEnvio>#{opts[:shipment_number]}</numeroEnvio> <codigoAdmision>#{opts[:admission_code]}</codigoAdmision> <clienteRemitente>#{opts[:sender_code]}</clienteRemitente> </anularEnvio> </soap:Body> </soap:Envelope>" begin xml_response = RestClient.post server_url, xml, content_type: "text/xml" json_response = Crack::XML.parse(xml_response) json_response["soap:Envelope"]["soap:Body"]["anularEnvioResponse"]["anularEnvioResult"] rescue => error return CityboxApi.catch_error(error) end end
validate_shipment(opts={})
click to toggle source
send a validate shipment request => 'validarEnvio' service
# File lib/citybox_api/shipments.rb, line 26 def validate_shipment opts={} server_url = "http://b2b.correos.cl:8008/ServicioValidacionAdmisionCEPExterno/cch/ws/enviosCEP/externo/implementacion/ServicioExternoValidaAdmisionCEP.asmx" opts = check_shipment_opts opts xml = shipment_xml "validarEnvio", opts begin xml_response = RestClient.post server_url, xml, content_type: "text/xml" json_response = Crack::XML.parse(xml_response) json_response["soap:Envelope"]["soap:Body"]["validarEnvioResponse"]["validarEnvioResult"] rescue => error return CityboxApi.catch_error(error) end end
Private Instance Methods
check_shipment_opts(opts)
click to toggle source
# File lib/citybox_api/shipments.rb, line 72 def check_shipment_opts opts #default values opts[:sender_country] ||= "056" #chile opts[:receiver_country] ||= "056" #chile opts[:declared_import_value] ||= "NO" opts[:destination_email] ||= "NO" opts[:success_return] ||= "N" opts[:documents_number] ||= 0 opts[:secure_payment] ||= "N" #check params CityboxApi.check_params [ :admission_code, :sender_code, :sender_street, :sender_commune, :sender_contact_person, :receiver_name, :receiver_street, :receiver_commune, :service_code, :pieces_number, :kilograms, :reference_number, :declared_import_value, :payment_type ], opts return opts end
shipment_xml(service_name, opts={})
click to toggle source
# File lib/citybox_api/shipments.rb, line 92 def shipment_xml service_name, opts={} "<?xml version='1.0' encoding='utf-8'?> <soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> <soap:Body> <#{service_name} xmlns='http://tempuri.org/'> <usuario>#{@user}</usuario> <contrasena>#{@password}</contrasena> <admisionTo> <ExtensionData /> <CodigoAdmision>#{opts[:admission_code]}</CodigoAdmision> <ClienteRemitente>#{opts[:sender_code]}</ClienteRemitente> <NombreRemitente>#{opts[:sender_name]}</NombreRemitente> <DireccionRemitente>#{opts[:sender_street]}</DireccionRemitente> <PaisRemitente>#{opts[:sender_country]}</PaisRemitente> <CodigoPostalRemitente></CodigoPostalRemitente> <ComunaRemitente>#{opts[:sender_commune]}</ComunaRemitente> <RutRemitente>#{opts[:sender_rut]}</RutRemitente> <PersonaContactoRemitente>#{opts[:sender_contact_person]}</PersonaContactoRemitente> <TelefonoContactoRemitente>#{opts[:sender_contact_phone]}</TelefonoContactoRemitente> <ClienteDestinatario></ClienteDestinatario> <CentroDestinatario></CentroDestinatario> <NombreDestinatario>#{opts[:receiver_name]}</NombreDestinatario> <DireccionDestinatario>#{opts[:receiver_street]}</DireccionDestinatario> <PaisDestinatario>#{opts[:receiver_country]}</PaisDestinatario> <CodigoPostalDestinatario></CodigoPostalDestinatario> <ComunaDestinatario>#{opts[:receiver_commune]}</ComunaDestinatario> <RutDestinatario>#{opts[:receiver_rut]}</RutDestinatario> <PersonaContactoDestinatario>#{opts[:receiver_contact_person]}</PersonaContactoDestinatario> <TelefonoContactoDestinatario>#{opts[:receiver_contact_phone].to_i}</TelefonoContactoDestinatario> <CodigoServicio>#{opts[:service_code]}</CodigoServicio> <NumeroTotalPiezas>#{opts[:pieces_number].to_i}</NumeroTotalPiezas> <Kilos>#{opts[:kilograms]}</Kilos> <Volumen>#{opts[:volume].to_i}</Volumen> <NumeroReferencia>#{opts[:reference_number]}</NumeroReferencia> <ImporteReembolso>0</ImporteReembolso> <ImporteValorDeclarado>#{opts[:declared_import_value].to_i}</ImporteValorDeclarado> <TipoPortes>#{opts[:payment_type]}</TipoPortes> <Observaciones>#{opts[:observations]}</Observaciones> <Observaciones2></Observaciones2> <EmailDestino>#{opts[:destination_email]}</EmailDestino> <TipoMercancia>#{opts[:commodity_type]}</TipoMercancia> <DevolucionConforme>#{opts[:success_return]}</DevolucionConforme> <NumeroDocumentos>#{opts[:documents_number].to_i}</NumeroDocumentos> <PagoSeguro>#{opts[:secure_payment]}</PagoSeguro> </admisionTo> </#{service_name}> </soap:Body> </soap:Envelope>" end