* Copyright (C) 2023 SuperAdmin * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file cfdimx/admin/sat_cargamasiva.php * \ingroup cfdimx * \brief Carga Masiva Claves page of module CFDIMX. */ // Load Dolibarr environment $res = 0; // Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; } // Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME $tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { $i--; $j--; } if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; } if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; } // Try main.inc.php using relative path if (!$res && file_exists("../../main.inc.php")) { $res = @include "../../main.inc.php"; } if (!$res && file_exists("../../../main.inc.php")) { $res = @include "../../../main.inc.php"; } if (!$res) { die("Include of main fails"); } // Libraries require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; dol_include_once('/cfdimx/class/admin.class.php'); dol_include_once('/cfdimx/lib/cfdimxadmin.lib.php'); use PhpOffice\PhpSpreadsheet\Reader\Xlsx; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Style\Alignment; require_once DOL_DOCUMENT_ROOT.'/includes/phpoffice/phpspreadsheet/src/autoloader.php'; require_once DOL_DOCUMENT_ROOT.'/includes/Psr/autoloader.php'; require_once PHPEXCELNEW_PATH.'Spreadsheet.php'; // Translations $langs->loadLangs(array("errors", "admin", "cfdimx@cfdimx")); // Access control if (!$user->admin) { accessforbidden(); } // Parameters $action = GETPOST('action', 'aZ09'); $backtopage = GETPOST('backtopage', 'alpha'); $catalogo = GETPOST('catalogo'); $config = new ConfiguracionCFDIMX($db); /* * Actions */ // None /* * View */ $form = new Form($db); $help_url = ''; $page_name = "SAT - Carga Masiva - Claves SAT"; $arrayofjs = array('/cfdimx/js/cfdimx.js.php'); llxHeader('', $langs->trans($page_name), $help_url, '', 0, 0, $arrayofjs); // Subheader $linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans($page_name), $linkback, 'fa-file-excel'); // Configuration header $head = cfdimxAdminPrepareHead(); print dol_get_fiche_head($head, 'sat', $langs->trans($page_name), 0, 'fa-globe'); // print 'sat'; $head = cfdimxAdminSATPrepareHead(); print dol_get_fiche_head($head, 'sat_carga_masiva', $langs->trans($page_name), 0, 'fa-file-excel'); $config->getInfoTabCargaMasiva(); print '
'; print '
'; if((int)DOL_VERSION > 15){ print ''; } print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print '
'; print img_picto('', 'fa-file-excel green'); print '  '; print 'Plantilla Claves SAT'; print '
'; print 'Plantilla'; print ''; print ''; print 'Catálogo'; print $form->selectarray('catalogo', $config->cargamasiva_catalogossat, $catalogo, 'Selecciona Catálogo'); print '
'; print '
'; print ''; print '
'; print '
'; print '
'; if($action == "view_plantilla"){ print '
'; $reader = new Xlsx(); $workbook = $reader->load($_FILES['plantilla']["tmp_name"]); $rowcount = $workbook->getActiveSheet()->getHighestDataRow(); // print 'rowcount::'.$rowcount.'::
'; $workbook->getActiveSheet()->getStyle('A1') ->getNumberFormat() ->setFormatCode( \PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_DATETIME ); $datos = array(); $xlsx = new Xlsx(); $info = $xlsx->listWorksheetinfo($_FILES['plantilla']["tmp_name"]); $countcolumns = $info[0]['totalColumns']; for($row = 2; $row <= $rowcount; $row++){ for($col = 1; $col <= $countcolumns; $col++) { $val = $workbook->getActiveSheet()->getCellByColumnAndRow($col, $row)->getValue(); // if($col == 1 && $row > 2){ // // Funciona // $date = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($val); // $val = dol_print_date($date, "%Y-%m-%d %H:%M:%S"); // } if(empty($val) && $val == "" && $col == 1){ break; } $datos[$row][$col] = $val; } } if(is_array($datos) && count($datos) > 0){ print ''; print ''; print ''; print ''; foreach ($datos as $key => $value) { $codigo = $value[1]; $etiqueta = $value[2]; $estatus = $value[6]; $extrafields1 = ''; $extrafields2 = ''; $extrafields3 = ''; if(in_array($catalogo, $config->cargamasiva_table_extrafields1)){ $extrafields1 = $value[3]; } if($catalogo == 'c_cfdimx_config_autotransporte'){ $extrafields2 = $value[4]; $extrafields3 = $value[5]; } $config->createClaveDiccionario($catalogo, $codigo, $etiqueta, $estatus, $extrafields1, $extrafields2, $extrafields3); } print ''; print ''; print ''; print '
'; print $config->cargamasiva_catalogossat[$catalogo]; print '
'; print 'Proceso Terminado'; print '
'; if(count($config->cargamasiva_validaciones) > 0){ print '
'; print 'Detalle del Proceso de las Claves. ('.count($config->cargamasiva_validaciones).')

'; print implode("
", $config->cargamasiva_validaciones); print '
'; } } print '
'; } // Page end print dol_get_fiche_end(); llxFooter(); $db->close();