Example #1
0
    public static function createPickup()
    {
        if ((int) date('H') < '14') {
            try {
                $sc_options = array('connection_timeout' => 30);
                $soap_client = new SoapClient((string) Configuration::get('SEUR_URLWS_R'), $sc_options);
                $merchant_data = SeurLib::getMerchantData();
                if (!isset($merchant_data['street_number'])) {
                    return false;
                }
                $numeroVia = filter_var($merchant_data['street_number'], FILTER_SANITIZE_NUMBER_INT);
                $plano = '
					<recogida>
						<usuario>' . Configuration::get('SEUR_WS_USERNAME') . '</usuario>
						<password>' . Configuration::get('SEUR_WS_PASSWORD') . '</password>
						<razonSocial>' . pSQL($merchant_data['company_name']) . '</razonSocial>
						<nombreEmpresa>' . pSQL($merchant_data['company_name']) . '</nombreEmpresa>
						<nombreContactoOrdenante>' . pSQL($merchant_data['name']) . '</nombreContactoOrdenante>
						<apellidosContactoOrdenante>' . pSQL($merchant_data['first_name']) . '</apellidosContactoOrdenante>
						<prefijoTelefonoOrdenante>34</prefijoTelefonoOrdenante>
						<telefonoOrdenante>' . pSQL($merchant_data['phone']) . '</telefonoOrdenante>
						<prefijoFaxOrdenante />
						<faxOrdenante />
						<nifOrdenante>' . pSQL($merchant_data['nif_dni']) . '</nifOrdenante>
						<paisNifOrdenante>ES</paisNifOrdenante>
						<mailOrdenante>' . pSQL($merchant_data['email']) . '</mailOrdenante>
						<tipoViaOrdenante>' . pSQL($merchant_data['street_type']) . '</tipoViaOrdenante>
						<calleOrdenante>' . pSQL($merchant_data['street_name']) . '</calleOrdenante>
						<tipoNumeroOrdenante>N.</tipoNumeroOrdenante>
						<numeroOrdenante>' . pSQL($numeroVia) . '</numeroOrdenante>
						<escaleraOrdenante />
						<pisoOrdenante />
						<puertaOrdenante />
						<codigoPostalOrdenante>' . pSQL($merchant_data['post_code']) . '</codigoPostalOrdenante>
						<poblacionOrdenante>' . pSQL($merchant_data['town']) . '</poblacionOrdenante>
						<provinciaOrdenante>' . pSQL($merchant_data['state']) . '</provinciaOrdenante>
						<paisOrdenante>' . pSQL($merchant_data['country']) . '</paisOrdenante>

						<diaRecogida>' . pSQL(sprintf('%02d', date('d'))) . '</diaRecogida>
						<mesRecogida>' . date('m') . '</mesRecogida>
						<anioRecogida>' . date('Y') . '</anioRecogida>
						<servicio>1</servicio>
						<horaMananaDe></horaMananaDe>
						<horaMananaA></horaMananaA>
						<numeroBultos>1</numeroBultos>
						<mercancia>2</mercancia>
						<horaTardeDe>16:00</horaTardeDe>
						<horaTardeA>20:00</horaTardeA>
						<tipoPorte>P</tipoPorte>
						<observaciones></observaciones>
						<tipoAviso>EMAIL</tipoAviso>
						<idiomaContactoOrdenante>' . pSQL($merchant_data['country']) . '</idiomaContactoOrdenante>

						<razonSocialDestino>' . pSQL($merchant_data['company_name']) . '</razonSocialDestino>
						<nombreContactoDestino>' . pSQL($merchant_data['name']) . '</nombreContactoDestino>
						<apellidosContactoDestino>' . pSQL($merchant_data['first_name']) . '</apellidosContactoDestino>
						<telefonoDestino>' . pSQL($merchant_data['phone']) . '</telefonoDestino>
						<tipoViaDestino>' . pSQL($merchant_data['street_type']) . '</tipoViaDestino>
						<calleDestino>' . pSQL($merchant_data['street_name']) . '</calleDestino>
						<tipoNumeroDestino>N.</tipoNumeroDestino>
						<numeroDestino>' . pSQL($numeroVia) . '</numeroDestino>
						<escaleraDestino />
						<pisoDestino />
						<puertaDestino />
						<codigoPostalDestino>' . pSQL($merchant_data['post_code']) . '</codigoPostalDestino>
						<poblacionDestino>' . pSQL($merchant_data['town']) . '</poblacionDestino>
						<provinciaDestino>' . pSQL($merchant_data['state']) . '</provinciaDestino>
						<paisDestino>' . pSQL($merchant_data['country']) . '</paisDestino>
						<prefijoTelefonoDestino>34</prefijoTelefonoDestino>

						<razonSocialOrigen>' . pSQL($merchant_data['company_name']) . '</razonSocialOrigen>
						<nombreContactoOrigen>' . pSQL($merchant_data['name']) . '</nombreContactoOrigen>
						<apellidosContactoOrigen>' . pSQL($merchant_data['first_name']) . '</apellidosContactoOrigen>
						<telefonoRecogidaOrigen>' . pSQL($merchant_data['phone']) . '</telefonoRecogidaOrigen>
						<tipoViaOrigen>' . pSQL($merchant_data['street_type']) . '</tipoViaOrigen>
						<calleOrigen>' . pSQL($merchant_data['street_name']) . '</calleOrigen>
						<tipoNumeroOrigen>N.</tipoNumeroOrigen>
						<numeroOrigen>' . pSQL($numeroVia) . '</numeroOrigen>
						<escaleraOrigen />
						<pisoOrigen />
						<puertaOrigen />
						<codigoPostalOrigen>' . pSQL($merchant_data['post_code']) . '</codigoPostalOrigen>
						<poblacionOrigen>' . pSQL($merchant_data['town']) . '</poblacionOrigen>
						<provinciaOrigen>' . pSQL($merchant_data['state']) . '</provinciaOrigen>
						<paisOrigen>' . pSQL($merchant_data['country']) . '</paisOrigen>
						<prefijoTelefonoOrigen>34</prefijoTelefonoOrigen>

						<producto>2</producto>
						<entregaSabado>N</entregaSabado>
						<entregaNave>N</entregaNave>
						<tipoEnvio>N</tipoEnvio>
						<valorDeclarado>0</valorDeclarado>
						<listaBultos>1;1;1;1;1/</listaBultos>
						<cccOrdenante>' . pSQL($merchant_data['ccc']) . '-' . pSQL($merchant_data['franchise']) . '</cccOrdenante>
						<numeroReferencia></numeroReferencia>
						<ultimaRecogidaDia />
						<nifOrigen></nifOrigen>
						<paisNifOrigen></paisNifOrigen>
						<aviso>N</aviso>
						<cccDonde />
						<cccAdonde></cccAdonde>
						<tipoRecogida></tipoRecogida>
					 </recogida>
			   ';
                $data = array('in0' => utf8_encode($plano));
                $response = $soap_client->crearRecogida($data);
                $string_xml = htmlspecialchars_decode($response->out);
                $xml = simplexml_load_string($string_xml);
                if (!empty($xml->DESCRIPCION)) {
                    return (string) $xml->DESCRIPCION;
                } elseif (!self::insertPickup((int) $xml->LOCALIZADOR, (string) $xml->NUM_RECOGIDA, (double) $xml->TASACION)) {
                    return 'Error en base de datos.';
                }
                // @TODO check if must be translatable
                Configuration::updateValue('SEUR_CONFIGURATION_OK', true);
            } catch (PrestaShopException $e) {
                $e->displayMessage();
            }
        } else {
            $module_instance = Module::getInstanceByName('seur');
            $module_instance->adminDisplayWarning($module_instance->l('Pickups after 2pm cannot be arranged via module, contact us by phone to arrange it manually.'));
        }
    }