Neg . " "; else $Signo = ""; if(intval(number_format($x,2,'.','') )!=$x) //<- averiguar si tiene decimales $s = number_format($x,2,'.',''); else $s = number_format($x,2,'.',''); $Pto = strpos($s, $this->Dot); if ($Pto === false) { $Ent = $s; $Frc = $this->Void; } else { $Ent = substr($s, 0, $Pto ); $Frc = substr($s, $Pto+1); } if($Ent == $this->Zero || $Ent == $this->Void) $s = "Cero "; elseif( strlen($Ent) > 7) { $s = $this->SubValLetra(intval( substr($Ent, 0, strlen($Ent) - 6))) . "Millones " . $this->SubValLetra(intval(substr($Ent,-6, 6))); } else { $s = $this->SubValLetra(intval($Ent)); } if (substr($s,-9, 9) == "Millones " || substr($s,-7, 7) == "Millón ") $s = $s . "de "; if($this->substituir_un_mil_por_mil){ // En el castellano de España en vez de decir "Un Mil" se dice "Mil" if(substr($s,0,6)=="Un Mil"){ $s = substr($s,3); } } // para compatibilizar la clase con la version antigua if ( !$this->tratar_decimales ){ // ignora los decimales i los muestra como XX/100 // $s = $s . $Moneda_singular; $s = $s . (intval(abs($x))==1 ? $Moneda_singular : $Moneda_plural); // if($Frc != $this->Void) if($Frc != "00") { $s = $s . " " . $Frc. "/100"; //$s = $s . " " . $Frc . "/100"; } }else{ $s = $s . (intval(abs($x))==1 ? $Moneda_singular : $Moneda_plural); if($Frc == "00") { $s = $s . " con " . $Frc. "/100"; //$s = $s . " " . $Frc . "/100"; } else if($Frc != "00"){ $tmpV = new EnLetras(); $tmpV->anadir_MN_al_final = false; $tmpV->tratar_decimales = false; $s.= " con ".$tmpV->ValorEnLetras($Frc, $Centesima_parte_singular,$Centesima_parte_plural,"",""); } } // $letrass=$Signo . $s; return ($Signo . $s ).($this->tratar_decimales?"":""); } function SubValLetra($numero) { $Ptr=""; $n=0; $i=0; $x =""; $Rtn =""; $Tem =""; $x = trim("$numero"); $n = strlen($x); $Tem = $this->Void; $i = $n; while( $i > 0) { $Tem = $this->Parte(intval(substr($x, $n - $i, 1). str_repeat($this->Zero, $i - 1 ))); If( $Tem != "Cero" ) $Rtn .= $Tem . $this->SP; $i = $i - 1; } //--------------------- GoSub FiltroMil ------------------------------ $Rtn=str_replace(" Mil Mil", " Un Mil", $Rtn ); while(1) { $Ptr = strpos($Rtn, "Mil "); If(!($Ptr===false)) { If(! (strpos($Rtn, "Mil ",$Ptr + 1) === false )) $this->ReplaceStringFrom($Rtn, "Mil ", "", $Ptr); Else break; } else break; } //--------------------- GoSub FiltroCiento ------------------------------ $Ptr = -1; do{ $Ptr = strpos($Rtn, "Cien ", $Ptr+1); if(!($Ptr===false)) { $Tem = substr($Rtn, $Ptr + 5 ,1); if( $Tem == "M" || $Tem == $this->Void) ; else $this->ReplaceStringFrom($Rtn, "Cien", "Ciento", $Ptr); } }while(!($Ptr === false)); //--------------------- FiltroEspeciales ------------------------------ $Rtn=str_replace("Diez Un", "Once", $Rtn ); $Rtn=str_replace("Diez Dos", "Doce", $Rtn ); $Rtn=str_replace("Diez Tres", "Trece", $Rtn ); $Rtn=str_replace("Diez Cuatro", "Catorce", $Rtn ); $Rtn=str_replace("Diez Cinco", "Quince", $Rtn ); $Rtn=str_replace("Diez Seis", "Dieciseis", $Rtn ); $Rtn=str_replace("Diez Siete", "Diecisiete", $Rtn ); $Rtn=str_replace("Diez Ocho", "Dieciocho", $Rtn ); $Rtn=str_replace("Diez Nueve", "Diecinueve", $Rtn ); $Rtn=str_replace("Veinte Un", "Veintiun", $Rtn ); $Rtn=str_replace("Veinte Dos", "Veintidos", $Rtn ); $Rtn=str_replace("Veinte Tres", "Veintitres", $Rtn ); $Rtn=str_replace("Veinte Cuatro", "Veinticuatro", $Rtn ); $Rtn=str_replace("Veinte Cinco", "Veinticinco", $Rtn ); $Rtn=str_replace("Veinte Seis", "Veintiseís", $Rtn ); $Rtn=str_replace("Veinte Siete", "Veintisiete", $Rtn ); $Rtn=str_replace("Veinte Ocho", "Veintiocho", $Rtn ); $Rtn=str_replace("Veinte Nueve", "Veintinueve", $Rtn ); //--------------------- FiltroUn ------------------------------ If(substr($Rtn,0,1) == "M") $Rtn = "Un " . $Rtn; //--------------------- Adicionar Y ------------------------------ for($i=65; $i<=88; $i++) { If($i != 77) $Rtn=str_replace("a " . Chr($i), "* y " . Chr($i), $Rtn); } $Rtn=str_replace("*", "a" , $Rtn); return($Rtn); } function ReplaceStringFrom(&$x, $OldWrd, $NewWrd, $Ptr) { $x = substr($x, 0, $Ptr) . $NewWrd . substr($x, strlen($OldWrd) + $Ptr); } function Parte($x) { $Rtn=''; $t=''; $i=''; Do { switch($x) { Case 0: $t = "Cero";break; Case 1: $t = "Un";break; Case 2: $t = "Dos";break; Case 3: $t = "Tres";break; Case 4: $t = "Cuatro";break; Case 5: $t = "Cinco";break; Case 6: $t = "Seis";break; Case 7: $t = "Siete";break; Case 8: $t = "Ocho";break; Case 9: $t = "Nueve";break; Case 10: $t = "Diez";break; Case 20: $t = "Veinte";break; Case 30: $t = "Treinta";break; Case 40: $t = "Cuarenta";break; Case 50: $t = "Cincuenta";break; Case 60: $t = "Sesenta";break; Case 70: $t = "Setenta";break; Case 80: $t = "Ochenta";break; Case 90: $t = "Noventa";break; Case 100: $t = "Cien";break; Case 200: $t = "Doscientos";break; Case 300: $t = "Trescientos";break; Case 400: $t = "Cuatrocientos";break; Case 500: $t = "Quinientos";break; Case 600: $t = "Seiscientos";break; Case 700: $t = "Setecientos";break; Case 800: $t = "Ochocientos";break; Case 900: $t = "Novecientos";break; Case 1000: $t = "Mil";break; Case 2000: $t = "Dos Mil";break; Case 3000: $t = "Tres Mil";break; Case 4000: $t = "Cuatro Mil";break; Case 5000: $t = "Cinco Mil";break; Case 6000: $t = "Seis Mil";break; Case 7000: $t = "Siete Mil";break; Case 8000: $t = "Ocho Mil";break; Case 9000: $t = "Nueve Mil";break; Case 10000: $t = "Diez Mil";break; Case 11000: $t = "Once Mil";break; Case 1000000: $t = "Millón";break; } If($t == $this->Void) { $i = $i + 1; $x = $x / 1000; If($x== 0) $i = 0; } else break; }while($i != 0); $Rtn = $t; Switch($i) { Case 0: $t = $this->Void;break; Case 1: $t = " Mil";break; Case 2: $t = " Millones";break; Case 3: $t = " Billones";break; } return($Rtn . $t); } } //-------------- Programa principal ------------------------ ?>