Secretaría de Finanzas del Distrito Federal "; //include_once ($menu_lateral); //print "
"; // print " "; // } //if(isset($menu_lateral) && !isset($menu_lateral_der)){ // print " "; // } // if(isset($menu_lateral) && isset($menu_lateral_der) ){ // print "
//
".$titulo_contenido."
//
// "; // } //elseif(isset($menu_lateral) && (!isset($menu_lateral_der))){ // print "
//
//"; // }else{ // print "
//
".$titulo_contenido."
//
// "; //} ?> rfc = $rfc; $this->array_mes = array("01"=>"1","02"=>"2","03"=>"3","04"=>"4","05"=>"5","06"=>"6","07"=>"7","08"=>"8","09"=>"9", "10" =>"A","11" =>"B","12" =>"C"); $this->array_dias = array("01"=>"1","02"=>"2","03"=>"3","04"=>"4","05"=>"5","06"=>"6","07"=>"7","08"=>"8","09"=>"9", "10" =>"A","11" =>"B","12" =>"C","13"=>"D","14"=>"E","15"=>"F","16"=>"G","17"=>"H","18"=>"I","19"=>"J","20"=>"K","21"=>"L","22"=>"M","23"=>"N","24"=>"O","25"=>"P","26"=>"Q","27"=>"R","28"=>"S","29"=>"T","30"=>"U","31"=>"V"); } function condensarRFC(){ $longitud_rfc=strlen($this->rfc); if ($longitud_rfc == '13'){ $primera = substr($this->rfc,0,4); $anio = substr($this->rfc,4,2); $mes = $this->array_mes[substr($this->rfc,6,2)]; $dia = $this->array_dias[substr($this->rfc,8,2)]; $homo = substr($this->rfc,10,3); if (preg_match('[�]', $primera)) { for($l=0; $l<=3; $l++) { $e=1; $letra=substr($primera,$l,$e); if(ereg ('[�]',$letra)){ $letra ='2'; } //echo "letra: $letra
"; $primer = $primer.$letra; } //Fin del For $primera = $primer; } //Fin del if $condensado = $primera.$anio.$mes.$dia.$homo; } //Fin del if else { $primera = substr($this->rfc,0,3); $anio = substr($this->rfc,3,2); $mes = $this->array_mes[substr($this->rfc,5,2)]; $dia = $this->array_dias[substr($this->rfc,7,2)]; $homo = substr($this->rfc,9,3); $filler ='X'; if (preg_match('[�&]', $primera)) { for($l=0; $l<=2; $l++) { $e=1; $letra=substr($primera,$l,$e); if(preg_match ('[&]',$letra)){ $letra ='1'; } if(preg_match ('[�]',$letra)){ $letra ='2'; } $primer = $primer.$letra; } //Fin del For $primera = $primer; } //Fin del if $condensado = $primera.$anio.$mes.$dia.$filler.$homo; } //Fin del if return $condensado; } /** * Funci�n para buscar la informaci�n del contribuyente y registrarla en l�nea de captura * * @param objeto conexion $obj_asimov * @param objeto conexion $obj_discovery * @return array */ function buscaInformacionContrib($obj_asimov,$obj_discovery){ $queryBusca="SELECT c.cot_id, cd.cod_id, c.cont_nombre, c.cont_apaterno, c.cont_amaterno FROM contribuyente c JOIN contribuyente_detalle cd USING (cot_id) WHERE c.cont_rfc='$this->rfc'"; $obj_discovery->set_query($queryBusca); $obj_discovery->ejecuta(); if($obj_discovery->regresa_renglones() != 0){ $Datos = $obj_discovery->regresa_registro(); $cot_id = $Datos[cot_id]; $cod_id = $Datos[cod_id]; } else { $query ="SELECT tipo from contribuyente where rfc='$this->rfc'"; $obj_asimov->set_query($query); //print_r($obj_asimov); $obj_asimov->ejecuta(); if($obj_asimov->regresa_renglones() != 0){ $Contribuyentes = $obj_asimov->regresa_registro(); $tipo = $Contribuyentes[tipo]; }else{ echo "No se puede obtener tipo del Contribuyente."; } switch ($tipo) { case 'M': $query_contribuyente = "SELECT razon_social,abrev, calle, num_ext,num_int,codpos,colonia FROM persona_moral m, domicilio d WHERE m.rfc=d.rfc AND m.rfc='$this->rfc'"; $ident = 1; break; case 'F': $query_contribuyente = "SELECT nombre, apellido_paterno,apellido_materno, calle,num_ext,num_int,codpos,colonia FROM persona_fisica f, domicilio d WHERE f.rfc=d.rfc AND f.rfc='$this->rfc'"; $ident = 2; break; default: $query_contribuyente = "SELECT nombre, ap_paterno AS apellido_paterno, ap_materno AS apellido_materno,calle,num_ext,num_int,codpos,coloni AS colonia FROM pre_contribuyente WHERE rfc ='$this->rfc'"; $ident = 2; break; } $obj_asimov->set_query($query_contribuyente); $obj_asimov->ejecuta(); if($obj_asimov->regresa_renglones() != 0){ $Contribuyente = $obj_asimov->regresa_registro(); if($ident == 1){ $razon_social = str_replace("'","''",$Contribuyente[razon_social]); $abrev = $Contribuyente[abrev]; $nombre_contribuyente = $razon_social." ".$abrev; } else { $nombre_contribuyente = str_replace("'","''",$Contribuyente[nombre]); $apaterno_contribuyente = str_replace("'","''",$Contribuyente[apellido_paterno]); $amaterno_contribuyente = str_replace("'","''",$Contribuyente[apellido_materno]); } $calle = ereg_replace("'","''",$Contribuyente[calle])." ".$Contribuyente[num_ext]; $colonia = $Contribuyente[colonia]; if($colonia == ""){ $colonia = 1; } $codpos = $Contribuyente[codpos]; $query_id_con = "SELECT nextval('contribuyente_cot_id_seq')"; $obj_discovery->set_query($query_id_con); $obj_discovery->ejecuta(); if ($obj_discovery->regresa_renglones() != 0) { $Contador = $obj_discovery->regresa_registro(); $cot_id = $Contador[0]; } else { echo "No se puede obtener el consecutivo para Contribuyente."; } $longitud = strlen($this->rfc); switch ($longitud) { case 12: $query_inserta ="BEGIN; INSERT INTO contribuyente VALUES ($cot_id,'$this->rfc','$apaterno_contribuyente','$amaterno_contribuyente','','M','$nombre_contribuyente'); INSERT INTO contribuyente_detalle VALUES (1,$cot_id,$colonia,'$codpos','','$telefono','$extension','$correoe','$calle',now(),'','');"; break; case 13: $query_inserta ="BEGIN; INSERT INTO contribuyente VALUES ($cot_id,'$this->rfc','$apaterno_contribuyente','$amaterno_contribuyente','','F','$nombre_contribuyente'); INSERT INTO contribuyente_detalle VALUES (1,$cot_id,'$colonia','$codpos','','$telefono','$extension','$correoe','$calle',now(),'','');"; break; } //echo $query_inserta; $obj_discovery->set_query($query_inserta); $obj_discovery->ejecuta(); if ($obj_discovery->regresa_insercion() != 1) { $queryFinal= "ROLLBACK;"; echo "No se puede registrar al contribuyente"; } else { $queryFinal= "COMMIT;"; } $obj_discovery->set_query($queryFinal); $obj_discovery->ejecuta(); $cod_id=1; } else { echo "No se puede obtener la informaci�n del Contribuyente."; } } return array($cot_id,$cod_id); } } ?> clave=$cve; $this->referencia=$ref; $this->vigencia=$vig; //echo "ESTA ES LA REFERENCIA ".$this->vigencia; if($this->vigencia > date('Y').'-12-31'){ $this->vigencia = date('Y')."-12-31"; } $this->importe=abs(trim($imp)); $this->periodo=$pp; $this->mi_lineacaptura=$obj_linea; $this->getKey(); $this->validaDatos(); } /** * Funci�n P�blica que servir� para obtener la referencia de la Funci�n de Cobro. * * @param string $funcioncobro Funci�n de cobro * @param object $conexion_silica objeto tipo conexi�n a SILICA */ public function obtenerReferenciaFC($funcioncobro,$conexion_silica,$subconcepto=0){ try{ if(get_class($conexion_silica) != "Pg_conexion_php5"){ array_push($this->mensajes_e,self::ERROR_NO_OBJETO_LINEA); throw new Exception("El parametro enviado no es de clase Pg_conexion_php5", self::ERROR_NO_OBJETO_CONEXION); } else { $anio_now = date('Y'); $query_obtenConcepto = "SELECT con_id FROM concepto WHERE con_clavelc='$this->clave' AND con_anio='$anio_now';"; $conexion_silica->set_query($query_obtenConcepto); $conexion_silica->ejecuta(); if ($conexion_silica->regresa_renglones() != 0) { $resultado = $conexion_silica->regresa_registro(); $con_id = $resultado['con_id']; $obtenConcepto = true; } else { $obtenConcepto = false; } if($obtenConcepto){ $query_obtenRefFC = "SELECT cve_fun_cob FROM concepto_con_cobro WHERE con_id = '$con_id' AND funcion_cobro_id='$funcioncobro' AND subconcepto='$subconcepto'"; $query_obtenRefFC; $conexion_silica->set_query($query_obtenRefFC); $conexion_silica->ejecuta(); if ($conexion_silica->regresa_renglones() != 0) { $resultado = $conexion_silica->regresa_registro(); $this->cve_funcob = $resultado['cve_fun_cob']; } else { $this->cve_funcob='0'; array_push($this->mensajes_e,self::ERROR_FUNCOB); throw new Exception("Funci�n de Cobro desconocida",self::ERROR_FUNCOB); } } } } catch (Exception $e){ echo 'Error LDC en: ', $e->getCode()." - ".$e->getMessage(),"\n"; } //echo "SOY EL RESULTADO DE REFERENCIA LC ".$this->cve_funcob; } /** * Funci�n P�blica que servir� para obtener la referencia de la Funci�n de Cobro para la parte Masiva * * @param string $funcioncobro Funci�n de cobro * @param string $cve_impuesto Clave del Impuesto */ public function obtenerReferenciaFCMasiva($funcioncobro,$cve_impuesto){ try{ switch ($cve_impuesto) { case '80': if ($funcioncobro=='0101') $this->cve_funcob ="1"; elseif ($funcioncobro == '0102') $this->cve_funcob="2"; elseif ($funcioncobro == '0301') $this->cve_funcob="3"; else $this->cve_funcob ="0"; break; case 81: if ($funcioncobro == '0302') $this->cve_funcob="2"; else $this->cve_funcob ="0"; break; case 86: if ($funcioncobro == '1311') $this->cve_funcob="1"; else $this->cve_funcob ="0"; break; case 87: if ($funcioncobro == '1310') $this->cve_funcob="1"; else $this->cve_funcob ="0"; break; case 84: case 20: case 22: case 24: case 26: if ($funcioncobro == '1301') $this->cve_funcob="1"; else $this->cve_funcob ="0"; break; case 85: case 21: case 23: case 25: case 27: if ($funcioncobro == '1302') $this->cve_funcob="1"; else $this->cve_funcob ="0"; break; default: $this->cve_funcob ="0"; break; } if($this->cve_funcob == "0"){ array_push($this->mensajes_e,self::ERROR_FUNCOB); throw new Exception("Funci�n de Cobro desconocidaa",self::ERROR_FUNCOB); } }catch(Exception $e){ echo 'Error LDC en: ', $e->getCode()." - ".$e->getMessage(),"\n"; } } private function validaDatos(){ //*****Validaci�n de la Clave try { if (!isset($this->clave) || !preg_match("/^[0-9]{2}/",$this->clave)) { array_push($this->mensajes_e,self::ERROR_FORMATO_CLAVE); throw new Exception("La clave del concepto es incorrecta", self::ERROR_FORMATO_CLAVE); } }catch(Exception $e){ echo 'Error LDC en: ', $e->getCode().' - '. $e->getMessage(),"\n"; } //*****Validaci�n de la Referencia try{ if(!isset($this->referencia) || strlen($this->referencia) != 11){ array_push($this->mensajes_e,self::ERROR_FORMATO_REF); throw new Exception("La referencia es incorrecta", self::ERROR_FORMATO_REF); } }catch (Exception $e){ //echo 'Error LDC en: ', $e->getCode().' - '. $e->getMessage(),"\n"; } //*****Validaci�n de la Vigencia try { if(!isset($this->vigencia) || strlen($this->vigencia) != 10){ array_push($this->mensajes_e,self::ERROR_FORMATO_FECHA); throw new Exception("La fecha est� incompleta", self::ERROR_FORMATO_FECHA); } }catch (Exception $e){ echo 'Error LDC en: ', $e->getCode().' - '. $e->getMessage(),"\n"; } try{ if(!checkdate(substr($this->vigencia,5,2), substr($this->vigencia,8,2), substr($this->vigencia,0,4))){ array_push($this->mensajes_e,self::ERROR_FORMATO_FECHA); throw new Exception("El formato de la fecha no es correcto", self::ERROR_FORMATO_FECHA); } }catch (Exception $e){ echo 'Error LDC en: ', $e->getCode().' - '. $e->getMessage(),"\n"; } //***** Validaci�n del Importe try{ if(!(preg_match("/^([0-9]+)$/",$this->importe) || preg_match("/^([0-9]+).([0-9]{2})$/",$this->importe))) { array_push($this->mensajes_e,self::ERROR_FORMATO_IMPORTE); throw new Exception("El formato del importe no es correcto", self::ERROR_FORMATO_IMPORTE); } }catch (Exception $e){ echo 'Error LDC en: ', $e->getCode().' - '. $e->getMessage(),"\n"; } try { if($this->importe == 0 && $this->clave!='77'){ array_push($this->mensajes_e,self::ERROR_FORMATO_IMPORTE); throw new Exception("El importe es de 0.00", self::ERROR_FORMATO_IMPORTE); } }catch (Exception $e){ echo 'Error LDC en: ', $e->getCode().' - '. $e->getMessage(),"\n"; } //*****Validaci�n del Periodo de Pago try{ //echo "SOY YO |".$this->periodo."|"; if (!isset($this->periodo) || strlen($this->periodo) != 2) { array_push($this->mensajes_e,self::ERROR_FORMATO_PP); throw new Exception("El periodo es incorrecto", self::ERROR_FORMATO_PP); } }catch (Exception $e){ echo 'Error LDC en: ', $e->getCode().' - '. $e->getMessage(),"\n"; } //*****Validaci�n del Objeto Genera Digito try{ if(get_class($this->mi_lineacaptura) != "utl_generaDigito"){ array_push($this->mensajes_e,self::ERROR_NO_OBJETO_LINEA); throw new Exception("El parametro enviado no es de clase Genera digito", self::ERROR_NO_OBJETO_LINEA ); } }catch (Exception $e){ echo 'Error LDC en: ', $e->getCode().' - '. $e->getMessage(),"\n"; } } public function obtenerMensajeError(){ // print_r($this->mensajes_e); return $this->mensajes_e; } private function getKey(){ $this->llave=87021923; //2021 } /** * Funcion para obtener la fecha condensada a partir del parametro enviado. * * @access public * @param string $this->vigencia Fecha de la vigencia * @return string $this->fcondensada Parte del objeto donde se almacena la fecha condensada */ private function formaFecha(){ $aniov = substr($this->vigencia,0,4); $mesv = substr($this->vigencia,5,2); $diav = substr($this->vigencia,8,2); $arrFecV = array("01-01"=>"AA", "01-02"=>"AB", "01-03"=>"AC", "01-04"=>"AD", "01-05"=>"AE", "01-06"=>"AF", "01-07"=>"AH", "01-08"=>"AJ", "01-09"=>"AK", "01-10"=>"AM", "01-11"=>"AN", "01-12"=>"AP", "01-13"=>"AQ", "01-14"=>"AR", "01-15"=>"AT", "01-16"=>"AU", "01-17"=>"AV", "01-18"=>"AW", "01-19"=>"AX", "01-20"=>"AY", "01-21"=>"BA", "01-22"=>"BB", "01-23"=>"BC", "01-24"=>"BD", "01-25"=>"BE", "01-26"=>"BF", "01-27"=>"BH", "01-28"=>"BJ", "01-29"=>"BK", "01-30"=>"BM", "01-31"=>"BN", "02-01"=>"BP", "02-02"=>"BQ", "02-03"=>"BR", "02-04"=>"BT", "02-05"=>"BU", "02-06"=>"BV", "02-07"=>"BW", "02-08"=>"BX", "02-09"=>"BY", "02-10"=>"CA", "02-11"=>"CB", "02-12"=>"CC", "02-13"=>"CD", "02-14"=>"CE","02-15"=>"CF", "02-16"=>"CH", "02-17"=>"CJ", "02-18"=>"CK", "02-19"=>"CM", "02-20"=>"CN", "02-21"=>"CP", "02-22"=>"CQ", "02-23"=>"CR", "02-24"=>"CT", "02-25"=>"CU", "02-26"=>"CV", "02-27"=>"CW", "02-28"=>"CX", "02-29"=>"CY", "03-01"=>"DC", "03-02"=>"DD", "03-03"=>"DE","03-04"=>"DF", "03-05"=>"DH", "03-06"=>"DJ", "03-07"=>"DK", "03-08"=>"DM", "03-09"=>"DN", "03-10"=>"DP", "03-11"=>"DQ", "03-12"=>"DR", "03-13"=>"DT", "03-14"=>"DU", "03-15"=>"DV", "03-16"=>"DW", "03-17"=>"DX", "03-18"=>"DY", "03-19"=>"EA", "03-20"=>"EB", "03-21"=>"EC","03-22"=>"ED", "03-23"=>"EE", "03-24"=>"EF", "03-25"=>"EH","03-26"=>"EJ","03-27"=>"EK", "03-28"=>"EM", "03-29"=>"EN", "03-30"=>"EP", "03-31"=>"EQ", "04-01"=>"ER", "04-02"=>"ET","04-03"=>"EU","04-04"=>"EV", "04-05"=>"EW","04-06"=>"EX","04-07"=>"EY", "04-08"=>"FA", "04-09"=>"FB", "04-10"=>"FC", "04-11"=>"FD", "04-12"=>"FE", "04-13"=>"FF","04-14"=>"FH", "04-15"=>"FJ", "04-16"=>"FK", "04-17"=>"FM", "04-18"=>"FN", "04-19"=>"FP","04-20"=>"FQ", "04-21"=>"FR", "04-22"=>"FT", "04-23"=>"FU", "04-24"=>"FV", "04-25"=>"FW", "04-26"=>"FX", "04-27"=>"FY", "04-28"=>"HA", "04-29"=>"HB", "04-30"=>"HC", "05-01"=>"HE", "05-02"=>"HF", "05-03"=>"HH", "05-04"=>"HJ", "05-05"=>"HK", "05-06"=>"HM", "05-07"=>"HN","05-08"=>"HP", "05-09"=>"HQ", "05-10"=>"HR","05-11"=>"HT","05-12"=>"HU", "05-13"=>"HV", "05-14"=>"HW","05-15"=>"HX", "05-16"=>"HY", "05-17"=>"JA", "05-18"=>"JB", "05-19"=>"JC","05-20"=>"JD", "05-21"=>"JE", "05-22"=>"JF", "05-23"=>"JH", "05-24"=>"JJ", "05-25"=>"JK","05-26"=>"JM", "05-27"=>"JN", "05-28"=>"JP", "05-29"=>"JQ", "05-30"=>"JR", "05-31"=>"JT", "06-01"=>"JU", "06-02"=>"JV", "06-03"=>"JW","06-04"=>"JX", "06-05"=>"JY", "06-06"=>"KA", "06-07"=>"KB","06-08"=>"KC", "06-09"=>"KD", "06-10"=>"KE", "06-11"=>"KF", "06-12"=>"KH", "06-13"=>"KJ", "06-14"=>"KK","06-15"=>"KM", "06-16"=>"KN", "06-17"=>"KP", "06-18"=>"KQ","06-19"=>"KR", "06-20"=>"KT", "06-21"=>"KU","06-22"=>"KV","06-23"=>"KW", "06-24"=>"KX", "06-25"=>"KY","06-26"=>"MA", "06-27"=>"MB", "06-28"=>"MC", "06-29"=>"MD","06-30"=>"ME", "07-01"=>"MH","07-02"=>"MJ","07-03"=>"MK", "07-04"=>"MM", "07-05"=>"MN", "07-06"=>"MP","07-07"=>"MQ", "07-08"=>"MR", "07-09"=>"MT", "07-10"=>"MU", "07-11"=>"MV", "07-12"=>"MW", "07-13"=>"MX", "07-14"=>"MY", "07-15"=>"NA", "07-16"=>"NB", "07-17"=>"NC", "07-18"=>"ND", "07-19"=>"NE", "07-20"=>"NF", "07-21"=>"NH", "07-22"=>"NJ", "07-23"=>"NK", "07-24"=>"NM", "07-25"=>"NN", "07-26"=>"NP", "07-27"=>"NQ", "07-28"=>"NR", "07-29"=>"NT","07-30"=>"NU","07-31"=>"NV", "08-01"=>"NW", "08-02"=>"NX", "08-03"=>"NY", "08-04"=>"PA", "08-05"=>"PB", "08-06"=>"PC", "08-07"=>"PD", "08-08"=>"PE", "08-09"=>"PF", "08-10"=>"PH", "08-11"=>"PJ", "08-12"=>"PK", "08-13"=>"PM", "08-14"=>"PN", "08-15"=>"PP", "08-16"=>"PQ", "08-17"=>"PR", "08-18"=>"PT", "08-19"=>"PU", "08-20"=>"PV", "08-21"=>"PW", "08-22"=>"PX", "08-23"=>"PY", "08-24"=>"QA", "08-25"=>"QB", "08-26"=>"QC", "08-27"=>"QD", "08-28"=>"QE", "08-29"=>"QF", "08-30"=>"QH", "08-31"=>"QJ", "09-01"=>"QK", "09-02"=>"QM", "09-03"=>"QN", "09-04"=>"QP", "09-05"=>"QQ","09-06"=>"QR", "09-07"=>"QT", "09-08"=>"QU", "09-09"=>"QV","09-10"=>"QW", "09-11"=>"QX", "09-12"=>"QY", "09-13"=>"RA", "09-14"=>"RB", "09-15"=>"RC", "09-16"=>"RD", "09-17"=>"RE","09-18"=>"RF", "09-19"=>"RH", "09-20"=>"RJ", "09-21"=>"RK", "09-22"=>"RM", "09-23"=>"RN", "09-24"=>"RP", "09-25"=>"RQ", "09-26"=>"RR", "09-27"=>"RT", "09-28"=>"RU", "09-29"=>"RV", "09-30"=>"RW", "10-01"=>"RY", "10-02"=>"TA", "10-03"=>"TB", "10-04"=>"TC", "10-05"=>"TD","10-06"=>"TE", "10-07"=>"TF", "10-08"=>"TH", "10-09"=>"TJ", "10-10"=>"TK", "10-11"=>"TM", "10-12"=>"TN", "10-13"=>"TP", "10-14"=>"TQ", "10-15"=>"TR", "10-16"=>"TT", "10-17"=>"TU", "10-18"=>"TV", "10-19"=>"TW", "10-20"=>"TX", "10-21"=>"TY", "10-22"=>"UA", "10-23"=>"UB", "10-24"=>"UC", "10-25"=>"UD", "10-26"=>"UE","10-27"=>"UF", "10-28"=>"UH", "10-29"=>"UJ", "10-30"=>"UK", "10-31"=>"UM", "11-01"=>"UN", "11-02"=>"UP","11-03"=>"UQ", "11-04"=>"UR", "11-05"=>"UT","11-06"=>"UU", "11-07"=>"UV", "11-08"=>"UW", "11-09"=>"UX","11-10"=>"UY", "11-11"=>"VA", "11-12"=>"VB", "11-13"=>"VC", "11-14"=>"VD", "11-15"=>"VE","11-16"=>"VF", "11-17"=>"VH", "11-18"=>"VJ", "11-19"=>"VK", "11-20"=>"VM", "11-21"=>"VN", "11-22"=>"VP","11-23"=>"VQ", "11-24"=>"VR", "11-25"=>"VT", "11-26"=>"VU", "11-27"=>"VV", "11-28"=>"VW", "11-29"=>"VX","11-30"=>"VY", "12-01"=>"WB", "12-02"=>"WC", "12-03"=>"WD", "12-04"=>"WE", "12-05"=>"WF","12-06"=>"WH", "12-07"=>"WJ","12-08"=>"WK", "12-09"=>"WM","12-10"=>"WN", "12-11"=>"WP", "12-12"=>"WQ", "12-13"=>"WR", "12-14"=>"WT", "12-15"=>"WU", "12-16"=>"WV", "12-17"=>"WW", "12-18"=>"WX", "12-19"=>"WY","12-20"=>"XA", "12-21"=>"XB","12-22"=>"XC", "12-23"=>"XD","12-24"=>"XE", "12-25"=>"XF", "12-26"=>"XH","12-27"=>"XJ", "12-28"=>"XK", "12-29"=>"XM", "12-30"=>"XN","12-31"=>"XP"); $fecha_conde= "$mesv-$diav"; $this->fcondensada=$arrFecV{$fecha_conde}; } /** * Funcion para obtener el digito verificador de la linea de captura * * @access public * @param $this->clave Atributo de este objeto correspondiente a la clave * @param $this->referencia Atributo de este objeto correspondiente a la referencia (Folio, RFC, etc.) * @param $this->fcondensada Atributo de este objeto correspondiente a la fecha condensada * @param $this->dv_imp Atributo de este objeto correspondiente al dígito validador del importe * @param $this->periodo Atributo de este objeto correspondiente al periodo de pago (Predial) * * @return string $lineacaptura Cadena de Linea de captura * */ private function formaDigitoVer(){ if($this->cve_funcob != '0'){ $linea=$this->clave . $this->referencia . $this->fcondensada . $this->cve_funcob . $this->periodo; $this->mi_lineacaptura->setLinea($linea); $dv_lc = $this->mi_lineacaptura->getDigitoVerificadorLC($linea); $ud_lc = $this->aotrabase($dv_lc,"0123456789","0123456789ABCDEFHJKMNPQRTUVWXY"); if($dv_lc < 30) { $ud_lc = "0".$ud_lc; if($dv_lc== 0){ $ud_lc="00";} } $this->linea_base=$linea.$ud_lc; } else { $this->linea_base=''; } } private function formaDigitoVerImp(){ $dvi = $this->mi_lineacaptura->getDigVerImp($this->importe); return $dvi; } function new_linea(){ //Para obtener la l�nea de captura base. $this->formaFecha(); $this->formaDigitoVer(); //comienza el proceso de generaci�n de la nueva ldc //echo "LINEA BASE ".$this->linea_base."
"; $corte = substr($this->linea_base,13,5); $corte_decimal = $this->aotrabase($corte,"0123456789ABCDEFHJKMNPQRTUVWXY","0123456789"); $corte_decimal=$this->cerosizquiera($corte_decimal); $suma_corte= ($corte_decimal+$this->importe+$this->llave)%24300000; $corte_base30=$this->aotrabase($suma_corte,"0123456789","0123456789ABCDEFHJKMNPQRTUVWXY"); $corte_base30=$this->cerosizquiera($corte_base30); $linea_final=strtoupper(substr($this->linea_base,0,13).$corte_base30.substr($this->linea_base,18,2)); $this->ldc = trim($linea_final); //echo "LINEA FINAL ".$this->ldc; //exit(); $this->valida_ldc(); return $this->ldc; } private function valida_ldc(){ try{ if(!isset($this->ldc) || strlen($this->ldc) != 20){ array_push($this->mensajes_e,self::ERROR_FORMATO_LDC); throw new Exception("Longitud menor de 20 caracteres", self::ERROR_FORMATO_LDC); } }catch (Exception $e){ $this->ldc=""; echo "Error LDC en: ".$e->getCode()." - ".$e->getMessage(), "\n"; } try{ $checa = count($this->obtenerMensajeError()); if($checa > 0){ /*echo "ENTRE AQUI "; print_r($this->obtenerMensajeError());*/ //array_push($this->mensajes_e,self::ERROR_FORMATO_LDC); throw new Exception("", self::ERROR_FORMATO_LDC); } }catch (Exception $e){ $this->ldc=""; } } private function aotrabase($numero,$base_original,$base_destino) { $numero = trim($numero); if(substr($numero,0,1) == "-"){ $numero = substr($numero,1); $negativo = true; } else { $negativo = false; } $arreglo_numero = preg_split('//', $numero, -1, PREG_SPLIT_NO_EMPTY); $entero = 0; foreach ($arreglo_numero as $digito) { $entero = $entero * strlen($base_original) + (strpos($base_original,$digito)); if(strpos($base_original,$digito) === false) { echo "Error: ".strpos($base_original,$digito)."\n"; echo "Caracter invalido: $digito\n"; return false; } } $resultado = ""; while ($entero > 0){ $digito = $entero % strlen($base_destino); $resultado = substr($base_destino,$digito,1).$resultado; $entero = floor($entero / strlen($base_destino)); } if($negativo) "-".$resultado; return $resultado; } private function cerosizquiera($cadena){ $long= strlen($cadena); switch ($long) { case 1: $cadena='0000'.$cadena; break; case 2: $cadena='000'.$cadena; break; case 3: $cadena='00'.$cadena; break; case 4: $cadena='0'.$cadena; break; default: $cadena=$cadena; break; } return $cadena; } /** * Funcion extra relacionada con el digitoverificador del codigo de barras * @experimental */ function formaDigitoVerCB($mi_importe = "default" ){ $linea = $this->clave.$this->referencia.$this->fcondensada.$this->dv_imp.$this->periodo; $this->mi_lineacaptura->setLinea($linea); $dv_lc = $this->mi_lineacaptura->getDigitoVerificadorLC($linea); $anio_fin = substr($this->vigencia,0,4); $ud_lc = ($dv_lc + $anio_fin) % 100; $ludlc = strlen($ud_lc); if($ludlc == 1) { $ud_lc= '0'.$ud_lc; } $lineacaptura = $linea.$ud_lc; //Extension para obtener el validador de la linea de captura if ($mi_importe == "default") { $this->mi_lineacaptura->set_primBC( $lineacaptura . str_pad(intval($this->importe),9, "0", STR_PAD_LEFT)); } else { $this->mi_lineacaptura->set_primBC( $lineacaptura . str_pad(intval($this->importe),9, "0", STR_PAD_LEFT)); } $formaDigitoVerCB = $this->mi_lineacaptura->getDigitoVerificadorBC(); return $formaDigitoVerCB; } function formaDigitoVerCBsololinea($importe = "default",$linea ){ // $linea = $this->clave.$this->referencia.$this->fcondensada.$this->dv_imp.$this->periodo; $this->mi_lineacaptura->setLinea($linea); $this->mi_lineacaptura->set_primBC( $lineacaptura . str_pad(intval($importe),9, "0", STR_PAD_LEFT)); $formaDigitoVerCB = $this->mi_lineacaptura->getDigitoVerificadorBC(); return $formaDigitoVerCB; } } ?>