Ejemplo n.º 1
0
 public function importar_exec2($idempresa, $idsucursal, $archivo)
 {
     $this->load->model("modcliente");
     $this->load->model("modgenerador");
     $this->load->model("modempresa");
     $this->load->model("modsucursal");
     $this->load->model("modcatalogo");
     $this->load->model("modfacturacion");
     $archivo = "./project_files/files/upload/{$archivo}";
     if (file_exists($archivo)) {
         $resultados = array("otros" => array());
         $doc = new DOMDocument("1.0", "utf-8");
         $doc->load($archivo);
         $clientes = array();
         foreach ($doc->getElementsByTagName("hoja") as $hoja) {
             //$hoja=new DOMElement("");
             switch (strtoupper($hoja->getAttribute("nombre"))) {
                 case "CLIENTES":
                     foreach ($hoja->getElementsByTagName("fila") as $fila) {
                         //$fila=new DOMElement("");
                         $objeto = new Modcliente();
                         $emp = new Modempresa();
                         $suc = new Modsucursal();
                         $fac = new Modfacturacion();
                         $errores = array();
                         $auxidemp = 0;
                         $auxnoctetmp = "";
                         foreach ($fila->getElementsByTagName("celda") as $celda) {
                             //$celda=new DOMElement("");
                             switch (strtoupper($celda->getAttribute("columna"))) {
                                 case "A":
                                     $aux = $emp->getFromCampo("razonsocial", $celda->nodeValue);
                                     if ($aux !== false && $aux[0]["idempresa"] > 0) {
                                         $auxidemp = $aux[0]["idempresa"];
                                     } else {
                                         array_push($errores, "No encontró la empresa");
                                     }
                                     break;
                                 case "B":
                                     $aux = $suc->getFromCampo($auxidemp, "nombre", $celda->nodeValue);
                                     if ($aux !== false && $aux[0]["idsucursal"] > 0) {
                                         $objeto->setIdsucursal($aux[0]["idsucursal"]);
                                     } else {
                                         array_push($errores, "No encontró la sucursal");
                                     }
                                     break;
                                 case "C":
                                     $auxnoctetmp = $celda->nodeValue;
                                     break;
                                 case 'D':
                                     $objeto->setRazonsocial($celda->nodeValue);
                                     break;
                                 case 'E':
                                     $objeto->setRfc($celda->nodeValue);
                                     break;
                                 case 'F':
                                     $objeto->setGiro($celda->nodeValue);
                                     break;
                                 case 'G':
                                     $objeto->setVendedor($this->modcatalogo->getIdOption(4, $celda->nodeValue));
                                     break;
                                 case 'H':
                                     $objeto->setAfiliacion($celda->nodeValue);
                                     break;
                                 case 'I':
                                     $objeto->setStatus($this->modcatalogo->getIdOption(13, $celda->nodeValue));
                                     break;
                                 case 'J':
                                     $fecha = $celda->nodeValue;
                                     $fecha = substr($fecha, 1);
                                     $fecha = substr($fecha, 0, strlen($fecha) - 1);
                                     $objeto->setFechacontratoinicio(DateToMySQL($fecha));
                                     break;
                                 case 'K':
                                     $fecha = $celda->nodeValue;
                                     $fecha = substr($fecha, 1);
                                     $fecha = substr($fecha, 0, strlen($fecha) - 1);
                                     $objeto->setFechacontratofin(DateToMySQL($fecha));
                                     break;
                                 case 'L':
                                     $fecha = $celda->nodeValue;
                                     $fecha = substr($fecha, 1);
                                     $fecha = substr($fecha, 0, strlen($fecha) - 1);
                                     $objeto->setFechaserviciosinicio(DateToMySQL($fecha));
                                     break;
                                 case 'M':
                                     $fecha = $celda->nodeValue;
                                     $fecha = substr($fecha, 1);
                                     $fecha = substr($fecha, 0, strlen($fecha) - 1);
                                     $objeto->setFechaserviciosfin(DateToMySQL($fecha));
                                     break;
                                 case 'N':
                                     $objeto->setCalle($celda->nodeValue);
                                     break;
                                 case 'O':
                                     $objeto->setNumexterior($celda->nodeValue);
                                     break;
                                 case 'P':
                                     $objeto->setNuminterior($celda->nodeValue);
                                     break;
                                 case 'Q':
                                     $objeto->setColonia($celda->nodeValue);
                                     break;
                                 case 'R':
                                     $objeto->setMunicipio($celda->nodeValue);
                                     break;
                                 case 'S':
                                     $objeto->setEstado($celda->nodeValue);
                                     break;
                                 case 'T':
                                     $objeto->setCp($celda->nodeValue);
                                     break;
                                 case 'U':
                                     $objeto->setReferencias($celda->nodeValue);
                                     break;
                                 case 'V':
                                     $objeto->setRepresentante($celda->nodeValue);
                                     break;
                                 case 'W':
                                     $objeto->setRepresentantecargo($celda->nodeValue);
                                     break;
                                 case 'X':
                                     $objeto->setRepresentanteemail($celda->nodeValue);
                                     break;
                                 case 'Y':
                                     $objeto->setRepresentantetelefono($celda->nodeValue);
                                     break;
                                 case 'Z':
                                     $objeto->setRepresentanteextencion($celda->nodeValue);
                                     break;
                                 case 'AA':
                                     $objeto->setRepresentantetelefono2($celda->nodeValue);
                                     break;
                                 case 'AB':
                                     $objeto->setRepresentanteextension2($celda->nodeValue);
                                     break;
                                 case 'AC':
                                     $objeto->setObservaciones($celda->nodeValue);
                                     break;
                                 case 'AD':
                                     $fac->setTiposervicio($this->modcatalogo->getIdOption(5, $celda->nodeValue));
                                     break;
                                 case 'AE':
                                     $fac->setTipocobro($this->modcatalogo->getIdOption(6, $celda->nodeValue));
                                     break;
                                 case 'AF':
                                     $fac->setPrecio($celda->nodeValue);
                                     break;
                                 case 'AG':
                                     $fac->setKilosintegrados($celda->nodeValue);
                                     break;
                                 case 'AH':
                                     $fac->setKiloexcedido($celda->nodeValue);
                                     break;
                                 case 'AI':
                                     $objeto->setFacturaxgenerador(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'AJ':
                                     $objeto->setOrdencompra(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'AK':
                                     $objeto->setDesglosemanifiestos(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'AL':
                                     $objeto->setLeyendas($celda->nodeValue);
                                     break;
                                 case 'AM':
                                     $objeto->setDiascredito($this->modcatalogo->getIdOption(7, $celda->nodeValue));
                                     break;
                                 case 'AN':
                                     $objeto->setCobranzacontacto($celda->nodeValue);
                                     break;
                                 case 'AO':
                                     $objeto->setCobranzaemail($celda->nodeValue);
                                     break;
                                 case 'AP':
                                     $objeto->setCobranzatelefono($celda->nodeValue);
                                     break;
                                 case 'AQ':
                                     $objeto->setCobranzaextension($celda->nodeValue);
                                     break;
                                 case 'AR':
                                     $objeto->setCobranzatelefono2($celda->nodeValue);
                                     break;
                                 case 'AS':
                                     $objeto->setCobranzaextension2($celda->nodeValue);
                                     break;
                                 case 'AT':
                                     $objeto->setCobranzaobservaciones($celda->nodeValue);
                                     break;
                                 case 'AU':
                                     $objeto->setCobranzacalle($celda->nodeValue);
                                     break;
                                 case 'AV':
                                     $objeto->setCobranzanumexterior($celda->nodeValue);
                                     break;
                                 case 'AW':
                                     $objeto->setCobranzanuminterior($celda->nodeValue);
                                     break;
                                 case 'AX':
                                     $objeto->setCobranzacolonia($celda->nodeValue);
                                     break;
                                 case 'AY':
                                     $objeto->setCobranzamunicipio($celda->nodeValue);
                                     break;
                                 case 'AZ':
                                     $objeto->setCobranzaestado($celda->nodeValue);
                                     break;
                                 case 'BA':
                                     $objeto->setCobranzacp($celda->nodeValue);
                                     break;
                                 case 'BB':
                                     $objeto->setReferenciabancaria($celda->nodeValue);
                                     break;
                             }
                         }
                         $fac->addToDatabase();
                         if ($fac->getIdfacturacion() == 0 || $fac->getIdfacturacion() == "") {
                             array_push($errores, "No se almacenaron los elementos de facturacion");
                         } else {
                             $objeto->setFacturaciones($fac->getIdfacturacion());
                         }
                         $objeto->setIdentificador($objeto->nextIdentificador($objeto->getIdsucursal()));
                         $objeto->setFechaalta(Today());
                         $objeto->addToDatabase();
                         if ($objeto->getIdcliente() == 0 || $objeto->getIdcliente() == "") {
                             array_push($errores, "No se almacenaron los datos del cliente");
                         }
                         $clientes[$auxnoctetmp] = array("tmpcte" => $auxnoctetmp, "razonsocial" => $objeto->getRazonsocial(), "idcliente" => $objeto->getIdcliente(), "identificador" => $objeto->getIdentificador(), "errores" => $errores, "generadores" => array());
                     }
                     break;
                 case "GENERADORES":
                     foreach ($hoja->getElementsByTagName("fila") as $fila) {
                         //$fila=new DOMElement("");
                         $objeto = new Modgenerador();
                         $fac = new Modfacturacion();
                         $errores = array();
                         $auxnoctetmp = "";
                         foreach ($fila->getElementsByTagName("celda") as $celda) {
                             //$celda=new DOMElement("");
                             switch (strtoupper($celda->getAttribute("columna"))) {
                                 case 'A':
                                     $auxnoctetmp = $celda->nodeValue;
                                     if (!isset($clientes[$auxnoctetmp])) {
                                         array_push($errores, "No se encontró la instancia del cliente");
                                     } else {
                                         $objeto->setIdcliente($clientes[$auxnoctetmp]["idcliente"]);
                                     }
                                     break;
                                 case 'B':
                                     $objeto->setRazonsocial($celda->nodeValue);
                                     break;
                                 case 'C':
                                     $objeto->setRfc($celda->nodeValue);
                                     break;
                                 case 'D':
                                     $objeto->setNumregamb($celda->nodeValue);
                                     break;
                                 case 'E':
                                     $objeto->setFrecuencia($this->modcatalogo->getIdOption(3, $celda->nodeValue));
                                     break;
                                 case 'F':
                                     $objeto->setActivo(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'G':
                                     $fecha = $celda->nodeValue;
                                     $fecha = substr($fecha, 1);
                                     $fecha = substr($fecha, 0, strlen($fecha) - 1);
                                     $objeto->setHorarioinicio($fecha);
                                     break;
                                 case 'H':
                                     $fecha = $celda->nodeValue;
                                     $fecha = substr($fecha, 1);
                                     $fecha = substr($fecha, 0, strlen($fecha) - 1);
                                     $objeto->setHorariofin($fecha);
                                     break;
                                 case 'I':
                                     $fecha = $celda->nodeValue;
                                     $fecha = substr($fecha, 1);
                                     $fecha = substr($fecha, 0, strlen($fecha) - 1);
                                     $objeto->setHorarioinicio2($fecha);
                                     break;
                                 case 'J':
                                     $fecha = $celda->nodeValue;
                                     $fecha = substr($fecha, 1);
                                     $fecha = substr($fecha, 0, strlen($fecha) - 1);
                                     $objeto->setHorariofin2($fecha);
                                     break;
                                 case 'K':
                                     $objeto->setServiciolunes(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'L':
                                     $objeto->setServiciomartes(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'M':
                                     $objeto->setServiciomiercoles(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'N':
                                     $objeto->setServiciojueves(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'O':
                                     $objeto->setServicioviernes(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'P':
                                     $objeto->setServiciosabado(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'Q':
                                     $objeto->setServiciodomingo(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'R':
                                     $objeto->setCalle($celda->nodeValue);
                                     break;
                                 case 'S':
                                     $objeto->setNumexterior($celda->nodeValue);
                                     break;
                                 case 'T':
                                     $objeto->setNuminterior($celda->nodeValue);
                                     break;
                                 case 'U':
                                     $objeto->setColonia($celda->nodeValue);
                                     break;
                                 case 'V':
                                     $objeto->setMunicipio($celda->nodeValue);
                                     break;
                                 case 'W':
                                     $objeto->setEstado($celda->nodeValue);
                                     break;
                                 case 'X':
                                     $objeto->setCp($celda->nodeValue);
                                     break;
                                 case 'Y':
                                     $objeto->setReferencias($celda->nodeValue);
                                     break;
                                 case 'Z':
                                     $objeto->setRepresentante($celda->nodeValue);
                                     break;
                                 case 'AA':
                                     $objeto->setRepresentantecargo($celda->nodeValue);
                                     break;
                                 case 'AB':
                                     $objeto->setRepresentanteemail($celda->nodeValue);
                                     break;
                                 case 'AC':
                                     $objeto->setRepresentantetelefono($celda->nodeValue);
                                     break;
                                 case 'AD':
                                     $objeto->setRepresentanteextension($celda->nodeValue);
                                     break;
                                 case 'AE':
                                     $objeto->setRepresentantetelefono2($celda->nodeValue);
                                     break;
                                 case 'AF':
                                     $objeto->setCobranzaextension2($celda->nodeValue);
                                     break;
                                 case 'AG':
                                     $objeto->setObservaciones($celda->nodeValue);
                                     break;
                                 case 'AH':
                                     $fac->setTiposervicio($this->modcatalogo->getIdOption(5, $celda->nodeValue));
                                     break;
                                 case 'AI':
                                     $fac->setTipocobro($this->modcatalogo->getIdOption(6, $celda->nodeValue));
                                     break;
                                 case 'AJ':
                                     $fac->setPrecio($celda->nodeValue);
                                     break;
                                 case 'AK':
                                     $fac->setKilosintegrados($celda->nodeValue);
                                     break;
                                 case 'AL':
                                     $fac->setKiloexcedido($celda->nodeValue);
                                     break;
                                 case 'AM':
                                     $objeto->setOrdencompra(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'AN':
                                     $objeto->setDesglosemanifiestos(strtoupper(trim($celda->nodeValue)) == "SI" ? 1 : 0);
                                     break;
                                 case 'AO':
                                     $objeto->setLeyendas($celda->nodeValue);
                                     break;
                                 case 'AP':
                                     $objeto->setCobranzacontacto($celda->nodeValue);
                                     break;
                                 case 'AQ':
                                     $objeto->setCobranzaemail($celda->nodeValue);
                                     break;
                                 case 'AR':
                                     $objeto->setCobranzatelefono($celda->nodeValue);
                                     break;
                                 case 'AS':
                                     $objeto->setCobranzaextension($celda->nodeValue);
                                     break;
                                 case 'AT':
                                     $objeto->setCobranzatelefono2($celda->nodeValue);
                                     break;
                                 case 'AU':
                                     $objeto->setRepresentanteextension2($celda->nodeValue);
                                     break;
                                 case 'AV':
                                     $objeto->setCobranzaobservaciones($celda->nodeValue);
                                     break;
                                 case 'AW':
                                     $objeto->setCobranzacalle($celda->nodeValue);
                                     break;
                                 case 'AX':
                                     $objeto->setCobranzanumexterior($celda->nodeValue);
                                     break;
                                 case 'AY':
                                     $objeto->setCobranzanuminterior($celda->nodeValue);
                                     break;
                                 case 'AZ':
                                     $objeto->setCobranzacolonia($celda->nodeValue);
                                     break;
                                 case 'BA':
                                     $objeto->setCobranzamunicipio($celda->nodeValue);
                                     break;
                                 case 'BB':
                                     $objeto->setCobranzaestado($celda->nodeValue);
                                     break;
                                 case 'BC':
                                     $objeto->setCobranzacp($celda->nodeValue);
                                     break;
                                 case 'BD':
                                     $objeto->setGiro($celda->nodeValue);
                                     break;
                             }
                         }
                         $fac->addToDatabase();
                         if ($fac->getIdfacturacion() == 0 || $fac->getIdfacturacion() == "") {
                             array_push($errores, "No se almacenaron los datos de facturacion");
                         } else {
                             $objeto->setFacturaciones($fac->getIdfacturacion());
                         }
                         $objeto->setIdentificador(count($clientes[$auxnoctetmp]["generadores"]) + 1);
                         $objeto->addToDatabase();
                         if ($objeto->getIdgenerador() == 0 || $objeto->getIdgenerador() == "") {
                             array_push($errores, "No se almacenaron los datos del generador");
                         }
                         array_push($clientes[$auxnoctetmp]["generadores"], array("idgenerador" => $objeto->getIdgenerador(), "razonsocial" => $objeto->getRazonsocial(), "identificador" => $objeto->getIdentificador(), "errores" => $errores));
                     }
                     break;
             }
         }
         $head = $this->load->view('html/head', array(), true);
         $menumain = $this->load->view('menu/menumain', array(), true);
         $body = $this->load->view('clientes/importaresultado', array("menumain" => $menumain, "idempresa" => $idempresa, "idsucursal" => $idsucursal, "clientes" => $clientes), true);
         $this->load->view('html/html', array("head" => $head, "body" => $body));
     } else {
         echo "No existe el archivo {$archivo}";
     }
 }