include_once _PS_MODULE_DIR_ . 'seur/classes/SeurLib.php'; } $token = Tools::getValue('token'); $admin_token = Tools::getAdminToken('AdminSeur' . (int) Tab::getIdFromClassName('AdminSeur') . (int) Tools::getValue('id_employee')); $admin_token_15 = Tools::getAdminToken('AdminSeur15' . (int) Tab::getIdFromClassName('AdminSeur15') . (int) Tools::getValue('id_employee')); if ($token != $admin_token && $token != $admin_token_15) { exit; } $back = Tools::getValue('back'); if (!Validate::isUrl($back)) { exit; } try { $sc_options = array('connection_timeout' => 30); $soap_client = new SoapClient((string) Configuration::get('SEUR_URLWS_M'), $sc_options); $merchant_data = SeurLib::getMerchantData(); $data = array('in0' => $merchant_data['nif_dni'], 'in1' => $merchant_data['franchise'], 'in2' => $merchant_data['user'], 'in3' => $merchant_data['pass']); $response = $soap_client->generacionPDFDetalleNoFecha($data); if ($response->out == 'NO SE PUDIERON RECUPERAR DATOS PARA LA GENERACION DEL MANIFIESTO') { $url = $back . '&token=' . urlencode(Tools::getValue('token')) . '&codigo=-1&error=' . urlencode((string) $response->out); die(Tools::redirectAdmin($url)); } elseif ($response->out == 'ERROR USUARIO/PASSWORD ERRONEOS') { $url = $back . '&token=' . urlencode(Tools::getValue('token')) . '&codigo=-1&error=' . urlencode((string) $response->out); die(Tools::redirectAdmin($url)); } else { $pdf = base64_decode($response->out); ob_end_clean(); header('Content-type: application/pdf'); header('Content-Disposition: inline; filename="manifiesto_' . date('d-m-Y') . '".pdf"'); echo $pdf; }
private function displayForm() { $this->context->smarty->assign(array('configured' => (int) Configuration::get('SEUR_Configured'), 'employee' => $this->context->employee, 'img_path' => $this->_path . 'img/', 'module_path' => $this->_path, 'module_local_path' => version_compare(_PS_VERSION_, '1.5', '<') ? _PS_MODULE_DIR_ . $this->name . '/' : $this->local_path, 'ps_version' => _PS_VERSION_, 'seur_countries' => SeurLib::$seur_countries, 'street_types' => SeurLib::$street_types, 'state_configured' => (int) $this->stateConfigured, 'token' => Tools::getValue('token'))); if (Configuration::get('SEUR_Configured') == 1) { $id_lang = (int) $this->context->language->id; $this->context->smarty->assign(array('carriers' => Carrier::getCarriers((int) $id_lang, false, false, false, null, ALL_CARRIERS), 'configuration_table' => SeurLib::getConfiguration(), 'currency' => $this->context->currency, 'price_configured' => SeurLib::isPricesConfigured(), 'seur_active_carriers' => SeurLib::getSeurCarriers(true), 'seur_free_price' => Configuration::get('SEUR_FREE_PRICE'), 'seur_free_weight' => (double) Configuration::get('SEUR_FREE_WEIGTH'), 'seur_printer_name' => Configuration::get('SEUR_PRINTER_NAME'), 'seur_remcar_cargo' => (double) Configuration::get('SEUR_REMCAR_CARGO'), 'seur_remcar_cargo_min' => (double) Configuration::get('SEUR_REMCAR_CARGO_MIN'), 'seur_urlws_a' => Configuration::get('SEUR_URLWS_A'), 'seur_urlws_e' => Configuration::get('SEUR_URLWS_E'), 'seur_urlws_et' => Configuration::get('SEUR_URLWS_ET'), 'seur_urlws_m' => Configuration::get('SEUR_URLWS_M'), 'seur_urlws_r' => Configuration::get('SEUR_URLWS_R'), 'seur_urlws_sp' => Configuration::get('SEUR_URLWS_SP'), 'seur_weight_unit' => Configuration::get('PS_WEIGHT_UNIT'))); } $this->context->smarty->assign(array('merchant_data' => SeurLib::getMerchantData(), 'user_seurcom' => Configuration::get('SEUR_WS_USERNAME'), 'pass_seurcom' => Configuration::get('SEUR_WS_PASSWORD'))); $id_email_language = User::getIdEmailLanguage(); if (!Configuration::get('SEUR_Configured') && !$id_email_language) { $this->displayWarning(); $this->context->smarty->assign(array('email_warning_message' => $this->l('Email template is missing'), 'module_instance' => $this)); } return $this->context->smarty->fetch((version_compare(_PS_VERSION_, '1.5', '<') ? _PS_MODULE_DIR_ . $this->name . '/' : $this->local_path) . 'views/templates/admin/template.tpl'); }
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.')); } }
public static function createLabels($label_data, $tipo) { try { if (Validate::isFileName($label_data['pedido'])) { $label_name = $label_data['pedido']; } else { $module_instance = Module::getInstanceByName('seur'); return SeurLib::displayErrors($label_data['pedido'] . ' ' . $module_instance->l('could not be used as file name', 'Label')); } $sc_options = array('connection_timeout' => 30); $soap_client = new SoapClient((string) Configuration::get('SEUR_URLWS_ET'), $sc_options); $merchant_data = SeurLib::getMerchantData(); $notification = SeurLib::getConfigurationField('notification_advice_radio'); $advice_checkbox = SeurLib::getConfigurationField('advice_checkbox'); $distribution_checkbox = SeurLib::getConfigurationField('distribution_checkbox'); $servicio = 31; $producto = 2; $mercancia = false; $claveReembolso = ''; $valorReembolso = ''; if (SeurLib::getConfigurationField('international_orders') == 1 && ($label_data['iso'] != 'ES' && $label_data['iso'] != 'PT' && $label_data['iso'] != 'AD')) { $servicio = 77; $producto = 70; $mercancia = true; $label_data['total_bultos'] = 1; } if (isset($label_data['reembolso']) && ($label_data['iso'] == 'ES' || $label_data['iso'] == 'PT' || $label_data['iso'] == 'AD')) { $claveReembolso = 'f'; $valorReembolso = (double) $label_data['reembolso']; } if (isset($label_data['cod_centro']) && ($label_data['iso'] == 'ES' || $label_data['iso'] == 'PT' || $label_data['iso'] == 'AD')) { $servicio = 1; $producto = 48; } $total_weight = $label_data['total_kilos']; $total_packages = $label_data['total_bultos']; $pesoBulto = $total_weight / $total_packages; if ($pesoBulto < 1) { $pesoBulto = 1; $total_weight = $total_packages; } $cont = 0; $xml = '<?xml version="1.0" encoding="ISO-8859-1"?><root><exp>'; for ($i = 0; $i <= (double) $total_packages - 1; $i++) { $cont++; $xml .= '<bulto> <ci>' . (int) $merchant_data['cit'] . '</ci> <nif>' . pSQL($merchant_data['nif_dni']) . '</nif> <ccc>' . (int) $merchant_data['ccc'] . '</ccc> <servicio>' . pSQL($servicio) . '</servicio> <producto>' . pSQL($producto) . '</producto>'; if ($mercancia) { $xml .= '<id_mercancia>382</id_mercancia>'; } $xml .= '<cod_centro></cod_centro> <total_bultos>' . pSQL($total_packages) . '</total_bultos> <total_kilos>' . pSQL($total_weight) . '</total_kilos> <pesoBulto>' . pSQL($pesoBulto) . '</pesoBulto> <observaciones>' . pSQL($label_data['info_adicional']) . '</observaciones> <referencia_expedicion>' . pSQL($label_data['pedido']) . '</referencia_expedicion> <ref_bulto>' . pSQL($label_data['pedido'] . sprintf('%03d', (int) $i + 1)) . '</ref_bulto> <clavePortes>F</clavePortes> <clavePod></clavePod> <claveReembolso>' . pSQL($claveReembolso) . '</claveReembolso> <valorReembolso>' . pSQL($valorReembolso) . '</valorReembolso> <libroControl></libroControl> <nombre_consignatario>' . pSQL($label_data['name']) . '</nombre_consignatario> <direccion_consignatario>' . pSQL($label_data['direccion_consignatario']) . '</direccion_consignatario> <tipoVia_consignatario>CL</tipoVia_consignatario> <tNumVia_consignatario>N</tNumVia_consignatario> <numVia_consignatario>.</numVia_consignatario> <escalera_consignatario>.</escalera_consignatario> <piso_consignatario>.</piso_consignatario> <puerta_consignatario>.</puerta_consignatario> <poblacion_consignatario>' . pSQL($label_data['consignee_town']) . '</poblacion_consignatario>'; if (!empty($label_data['codPostal_consignatario'])) { $xml .= '<codPostal_consignatario>' . pSQL($label_data['codPostal_consignatario']) . '</codPostal_consignatario>'; } $xml .= ' <pais_consignatario>' . pSQL($label_data['iso']) . '</pais_consignatario> <codigo_pais_origen>' . pSQL($label_data['iso_merchant']) . '</codigo_pais_origen> <email_consignatario>' . pSQL($label_data['email_consignatario']) . '</email_consignatario> <sms_consignatario>' . ((int) $notification ? pSQL($label_data['movil']) : '') . '</sms_consignatario> <test_sms>' . ((int) $notification ? 'S' : 'N') . '</test_sms> <test_preaviso>' . ((int) $advice_checkbox ? 'S' : 'N') . '</test_preaviso> <test_reparto>' . ((int) $distribution_checkbox ? 'S' : 'N') . '</test_reparto> <test_email>' . ((int) $notification ? 'N' : 'S') . '</test_email> <eci>N</eci> <et>N</et> <telefono_consignatario>' . pSQL($label_data['telefono_consignatario']) . '</telefono_consignatario> <atencion_de>' . pSQL($label_data['companyia']) . '</atencion_de> </bulto> '; } $xml .= '</exp></root>'; $xml_name = (int) $merchant_data['franchise'] . '_' . (int) $merchant_data['cit'] . '_' . date('dmYHi') . '.xml'; $make_pickup = false; $auto = false; $pickup_data = Pickup::getLastPickup(); if (!empty($pickup_data)) { $datepickup = explode(' ', $pickup_data['date']); $datepickup = $datepickup[0]; if (strtotime(date('Y-m-d')) != strtotime($datepickup)) { $make_pickup = true; } if (SeurLib::getConfigurationField('pickup') == 0) { $auto = true; } } if ($tipo == 'pdf') { $data = array('in0' => $merchant_data['user'], 'in1' => $merchant_data['pass'], 'in2' => $xml, 'in3' => $xml_name, 'in4' => $merchant_data['nif_dni'], 'in5' => $merchant_data['franchise'], 'in6' => '-1', 'in7' => 'prestashop'); $response = $soap_client->impresionIntegracionPDFConECBWS($data); if ($response->out == 'ERROR') { return SeurLib::displayErrors((string) $response->out); } if ($response->out->mensaje != 'OK') { return SeurLib::displayErrors((string) $response->out->mensaje); } else { $pdf = base64_decode($response->out->PDF); if (is_writable(_PS_MODULE_DIR_ . 'seur/files/deliveries_labels/')) { file_put_contents(_PS_MODULE_DIR_ . 'seur/files/deliveries_labels/' . $label_name . '.pdf', $pdf); } SeurLib::setSeurOrder($label_data['pedido'], $total_packages, $total_weight, 'PDF'); if ($make_pickup && $auto) { Pickup::createPickup(); } } } elseif ($tipo == 'zebra') { $data = array('in0' => pSQL($merchant_data['user']), 'in1' => pSQL($merchant_data['pass']), 'in2' => 'ZEBRA', 'in3' => 'LP2844-Z', 'in4' => '2C', 'in5' => $xml, 'in6' => $xml_name, 'in7' => pSQL($merchant_data['nif_dni']), 'in8' => pSQL($merchant_data['franchise']), 'in9' => '-1', 'in10' => 'prestashop'); $response = $soap_client->impresionIntegracionConECBWS($data); if ($response->out == 'ERROR' || $response->out->mensaje != 'OK') { return SeurLib::displayErrors('Error al crear el envio y la etiqueta: ' . $response->out->mensaje); } else { if (is_writable(_PS_MODULE_DIR_ . 'seur/files/deliveries_labels/')) { file_put_contents(_PS_MODULE_DIR_ . 'seur/files/deliveries_labels/' . pSQL($label_name) . '.txt', (string) $response->out->traza); } SeurLib::setSeurOrder(pSQL($label_data['pedido']), (double) $total_packages, (double) $total_weight, 'zebra'); if ($make_pickup && $auto) { Pickup::createPickup(); } } } } catch (PrestaShopException $e) { $e->displayMessage(); } return true; }
require_once dirname(__FILE__) . '/../../../config/config.inc.php'; require_once dirname(__FILE__) . '/../../../init.php'; if (class_exists('SeurLib') == false) { include_once _PS_MODULE_DIR_ . 'seur/classes/SeurLib.php'; } $token = Tools::getValue('token'); $admin_token = Tools::getAdminToken('AdminSeur' . (int) Tab::getIdFromClassName('AdminSeur') . (int) Tools::getValue('id_employee')); if ($token != $admin_token) { exit; } $module_instance = Module::getInstanceByName('seur'); try { $sc_options = array('connection_timeout' => 30); $soap_client = new SoapClient((string) Configuration::get('SEUR_URLWS_E'), $sc_options); $nuevadate = strtotime('-15 days', strtotime(date('Y-m-d'))); $data_merchant = SeurLib::getMerchantData(); $data = array('in0' => 'S', 'in1' => Tools::getValue('expedition_number') ? pSQL(Tools::getValue('expedition_number')) : '', 'in2' => '', 'in3' => Tools::getValue('reference_number') ? pSQL(Tools::getValue('reference_number')) : '', 'in4' => pSQL($data_merchant['ccc']) . '-' . pSQL($data_merchant['franchise']), 'in5' => !Tools::getValue('start_date') ? date('d-m-Y', $nuevadate) : Tools::getValue('start_date'), 'in6' => !Tools::getValue('end_date') ? date('d-m-Y', $nuevadate) : Tools::getValue('end_date'), 'in7' => Tools::getValue('order_state') ? Tools::getValue('order_state') : '', 'in8' => '', 'in9' => '', 'in10' => '', 'in11' => '', 'in12' => Configuration::get('SEUR_WS_USERNAME'), 'in13' => Configuration::get('SEUR_WS_PASSWORD'), 'in14' => 'N'); $response = $soap_client->consultaListadoExpedicionesStr($data); if (empty($response->out)) { echo SeurLib::displayErrors($module_instance->l('No results.', 'getExpeditionAjax')); return false; } $string_xml = htmlspecialchars_decode($response->out); $xml = simplexml_load_string($string_xml); $delivery = $xml->EXPEDICION; $context = Context::getContext(); $context->smarty->assign('delivery', $delivery); $context->smarty->display(_PS_MODULE_DIR_ . 'seur/views/templates/admin/get_expedition.tpl'); } catch (PrestaShopException $e) { $e->displayMessage(); }