コード例 #1
0
    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;
    }
コード例 #2
0
ファイル: seur.php プロジェクト: tomideru/PrestaShop-modules
 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');
 }
コード例 #3
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.'));
        }
    }
コード例 #4
0
ファイル: Label.php プロジェクト: tomideru/PrestaShop-modules
    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;
    }
コード例 #5
0
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();
}