DB == null ) { $this->DB = new DB(); } return $this->DB; } public function DBSelect($empresaId) { if($this->DBSelect == null || $this->activeEmpresaId != $empresaId) { $this->DBSelect = new DB(false, $empresaId); $this->activeEmpresaId = $empresaId; } return $this->DBSelect; } function RoundNumber($number) { return round($number, 6); } function TruncateFloat($number, $digitos) { $raiz = 10; $multiplicador = pow ($raiz,$digitos); $resultado = ((int)($number * $multiplicador)) / $multiplicador; return number_format($resultado, $digitos,'.',''); } function FormatSeconds($sec, $padHours = false) { $hms = ""; $hours = intval(intval($sec) / 3600); $hms .= ($padHours) ? str_pad($hours, 2, "0", STR_PAD_LEFT). ":" : $hours. ":"; $minutes = intval(($sec / 60) % 60); $hms .= str_pad($minutes, 2, "0", STR_PAD_LEFT). ":"; $seconds = intval($sec % 60); $hms .= str_pad($seconds, 2, "0", STR_PAD_LEFT); return $hms; } function FormatMins($mins) { if($mins > 60) { $horas = floor($mins / 60); $mins = $mins - ($horas * 60); return $horas."h ".$mins."m"; } else { return $mins."m"; } } function FormatFecha($date) { $meses = array(1 => "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"); $trozos = explode("-",$date); $trozos[1] = $meses[(int)$trozos[1]]; $trozos[2] = substr($trozos[2],0,2); return $trozos[2]." de ".$trozos[1]." de ".$trozos[0]; } function FormatHora($hora) { $trozos = explode(":",$hora); return $trozos[0].":".$trozos[1]." hrs"; } function FormatFechaHora($date) { $meses = array(1 => "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"); $trozos = explode(" ",$date); $fecha = $trozos[0]; $hora = $trozos[1]; $trozosFecha = explode("-",$fecha); $trozosFecha[1] = $meses[(int)$trozosFecha[1]]; $trozosFecha[2] = substr($trozosFecha[2],0,2); $fechaFormateada = $trozosFecha[2]." de ".$trozosFecha[1]." de ".$trozosFecha[0]; $trozosHora = explode(":",$hora); $horaFormateada = $trozosHora[0].":".$trozosHora[1]." hrs"; return $fechaFormateada." ".$horaFormateada; } function FormatFechaServidor($date) { $trozos = explode("/",$date); $trozos[1] = (strlen($trozos[1]) == 1) ? "0".$trozos[1] : $trozos[1]; $trozos[0] = (strlen($trozos[0]) == 1) ? "0".$trozos[0] : $trozos[0]; return $trozos[2]."-".$trozos[1]."-".$trozos[0]; } function GetMonth($mes, $format = null) { $meses = array(1 => "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"); $mesesAbrev = array(1 => "Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"); if($format == "abreviado") return $mesesAbrev[(int)$mes]; else return $meses[(int)$mes]; } function GetLetters($string) { preg_match_all('/([a-zA-Z]+)/',$string,$results); return implode('', $results[0]); } function GetNumbers($string) { preg_match_all('/([0-9]+)/',$string,$results); return implode('', $results[0]); } function ValidateString($value, $max_chars=50, $minChars = 1, $field = "Atributo") { if(strlen($value) > $max_chars || strlen($value) < $minChars) { return $this->setError(10001, "error", "", $field); } else { return true; } }//validateString function ValidateInteger($value, $max = null, $min = null, $field = "Atributo") { if(ctype_digit((string)$value) == false) { return $this->setError(10020, "error", "", $field); } else { return true; } }//ValidateInteger function ValidateFloat($value, $field) { if(!is_numeric($value)) { return $this->setError(10020, "error", "", $field); } else { return true; } }//ValidateFloat function ValidateMail($mail, $field) { $mail = strtolower($mail); if (!preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/',trim($mail))) { return $this->setError(10002, "error", "", $field); } } function ValidateUrl($url) { if (!preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url)) { $this->error = 10001; return 10001; } } function ValidateFile($pathToFile) { $handle = @fopen($pathToFile, "r"); if ($handle === false) { $this->error = 10003; return 10003; } fclose($handle); return true; } function wwwRedirect() { if(!preg_match("/^www./", $_SERVER['HTTP_HOST'])) { header("location: http://www.".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); } } function UploadFile($name, $dir) { $path_parts = pathinfo($_FILES[$name]['name']); $ext = strtolower($path_parts["extension"]); $extArray = array("jpg", "png", "gif", "jpeg", "pdf", "doc", "docx", "txt", "xlsx"); if(!in_array($ext, $extArray)) { $this->setError(10010, "error", "", "Imagen"); } else { $newFileName = time().".".$ext; if(move_uploaded_file($_FILES[$name]['tmp_name'], WEB_ROOT ."/".$dir."/".$newFileName)) { return $newFileName; } else { $this->setError(10011, "error", "", "Imagen"); } } } function UploadImage($name, $dir, $size = null) { $path_parts = pathinfo($_FILES[$name]['name']); $ext = strtolower($path_parts["extension"]); $extArray = array("jpg", "png", "gif", "jpeg"); if(!in_array($ext, $extArray)) { return $this->setError(10010, "error", "", "Imagen"); } if($size) { list($width, $height) = getimagesize($_FILES[$name]['tmp_name']); if($width > $size || $height > $size) return $this->setError(10012, "error", "", "Imagen"); } $newFileName = time().".".$ext; if(move_uploaded_file($_FILES[$name]['tmp_name'], WEB_ROOT ."/".$dir."/".$newFileName)) { return $newFileName; } else { return $this->setError(10011, "error", "", "Imagen"); } } function HandleMultipages($page, $total_pages, $link, $pagevar, $limit = 5) { $pages = array(); $pages["numbers"] = array(); $pages["first"] = false; $pages["prev"] = false; $pages["next"] = false; $pages["last"] = false; if($page == 0) $page == 0; if($page > 0){ if(!$this->hs_eregi("\|$pagevar\|",$link)) $pages["first"] = $link."/".$pagevar."/0"; else $pages["first"] = $this->hs_preg_replace("\|$pagevar\|","0",$link); } if($page > 0){ if(!$this->hs_eregi("\|$pagevar\|",$link)) $pages["prev"] = $link."/".$pagevar."/".($page-1); else $pages["prev"] = $this->hs_preg_replace("\|$pagevar\|",(string)($page-1),$link); } for($i = ($page - $limit); $i < $page; $i++) { if($i >= 0) { if(!$this->hs_eregi("\|$pagevar\|",$link)) $pages["numbers"][$i] = $link."/".$pagevar."/".$i; else $pages["numbers"][$i] = $this->hs_preg_replace("\|$pagevar\|",(string)($i),$link); } } $pages[$page] = $link."/".$pagevar."/".$page; for($i = ($page + 1); $i <= ($page + $limit); $i++) { if($i <= $total_pages) { if(!$this->hs_eregi("\|$pagevar\|",$link)) $pages["numbers"][$i] = $link."/".$pagevar."/".$i; else $pages["numbers"][$i] = $this->hs_preg_replace("\|$pagevar\|",(string)($i),$link); } } if($page < $total_pages){ if(!$this->hs_eregi("\|$pagevar\|",$link)) $pages["next"] = $link."/".$pagevar."/".($page+1); else $pages["next"] = $this->hs_preg_replace("\|$pagevar\|",(string)($page+1),$link); } if($page > 0){ if(!$this->hs_eregi("\|$pagevar\|",$link)) $pages["last"] = $link."/".$pagevar."/".$total_pages; else $pages["last"] = $this->hs_preg_replace("\|$pagevar\|",(string)($total_pages),$link); } $pages["current"] = $page+1; $items_per_page = defined('ITEMS_PER_PAGE') ? ITEMS_PER_PAGE : 20; $pages["items_per_page"] = $items_per_page; $pages["start"] = $page * $items_per_page; return $pages; }//handle_multipages function hs_eregi($var1,$var2,$var3 = array()){ if(function_exists("mb_eregi")) return mb_eregi($var1,$var2,$var3); else return preg_match($var1,$var2,$var3); }//hs_eregi function hs_preg_replace($var1,$var2,$var3){ // mb_preg_replace no existe, usar directamente preg_replace return preg_replace($var1,$var2,$var3); }//hs_preg_replace function SexoString($sex) { switch($sex) { case "m": $sexo = "Masculino";break; case "f": $sexo = "Femenino";break; default: $sexo = "Masculino"; } return $sexo; } function CalculateIva($price) { $ivaRate = 16; // Default IVA rate if (isset($_ENV['IVA_RATE'])) { $ivaRate = (float)$_ENV['IVA_RATE'] * 100; // Convert from decimal to percentage } return $price * ($ivaRate / 100); } function ReturnLang() { if(!isset($_SESSION['lang']) || !$_SESSION['lang']) { $lang = "es"; } elseif(isset($_SESSION['lang']) && $_SESSION['lang'] == "es") { $lang = "es"; } else { $lang = "en"; } return $lang; } function FormatOutputText(&$text) { $text = nl2br($text); } function SetIp() { if ($_SERVER) { if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $realip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { $realip = $_SERVER['HTTP_CLIENT_IP']; } else { $realip = $_SERVER['REMOTE_ADDR']; } } else { if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) { $realip = getenv( 'HTTP_X_FORWARDED_FOR' ); } elseif ( getenv( 'HTTP_CLIENT_IP' ) ) { $realip = getenv( 'HTTP_CLIENT_IP' ); } else { $realip = getenv( 'REMOTE_ADDR' ); } } return $realip; } function setError($value = NULL, $type="error", $custom = "", $errorField = "") { $this->type[] = $type; $this->error[] = $value; $this->errorField[] = $errorField; $this->complete = true; } function GetError() { if(!$this->complete) return false; else return true; } function GetErrors() { return $this->error; } function GetErrorField() { return $this->errorField; } function GetType() { return $this->type; } function GetField() { return $this->errorField; } function Reset() { $this->type = array(); $this->error = array(); $this->errorField = array(); $this->complete = false; } function PrintErrors() { $errorStr = "
"; foreach($this->error as $key => $val) { $msg = $this->errorMessage($val); $field = $this->errorField[$key]; $errorStr .= "
"; if($field != "") { $errorStr .= "".$field.": "; } $errorStr .= $msg; $errorStr .= "
"; } $errorStr .= "
"; echo $errorStr; } function errorMessage($code) { global $property; return $property['error'][$code]; } function ValidateRfc($rfc, $field) { if(strlen($rfc) > 13) { return $this->setError(10013,"error","", $field); } return true; } function ExportToExcel($data, $filename) { header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"$filename\""); header("Pragma: no-cache"); header("Expires: 0"); foreach($data as $row) { echo implode("\t", $row) . "\n"; } } function GetMonthRange($startDate, $endDate, $type = "default") { $startTime = strtotime($startDate); $endTime = strtotime($endDate); if($startTime > $endTime) return false; $meses = array(); if($type == "default") { while($startTime <= $endTime) { $mes = date("n", $startTime); $year = date("Y", $startTime); $meses["$year-$mes"] = $this->GetMonth($mes)." ".$year; $startTime = strtotime("+1 month", $startTime); } } return $meses; } function PrepareToSql($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } function ConvertToView($data) { $data = stripslashes($data); $data = htmlspecialchars_decode($data); return $data; } function ToName($string) { $string = strtolower($string); $string = ucwords($string); return $string; } function ValidateFileFormat($file, $formats) { $filePathParts = pathinfo($file); $fileExt = strtolower($filePathParts["extension"]); if(in_array($fileExt, $formats)) return true; else return false; } function GetImageSize($src, $maxwidth = null, $maxheight = null) { $size = getimagesize($src); if(!$maxwidth) $maxwidth = 200; if(!$maxheight) $maxheight = 200; $width = $size[0]; $height = $size[1]; if($width > $maxwidth) { $height = ($maxwidth / $width) * $height; $width = $maxwidth; } if($height > $maxheight) { $width = ($maxheight / $height) * $width; $height = $maxheight; } return array('width' => round($width), 'height' => round($height)); } function SendEmail($to, $subject, $body, $from = null, $fromName = null) { global $mail; if(!$from) $from = SMTP_USER; if(!$fromName) $fromName = "Ventas System"; $mail->ClearAddresses(); $mail->AddAddress($to); $mail->Subject = $subject; $mail->Body = $body; $mail->From = $from; $mail->FromName = $fromName; if(!$mail->Send()) { return false; } else { return true; } } function utf8fix($text) { $text = $text; $length = strlen($text); $out = ''; $escaped = false; for($i=0;$i<$length;$i++) { $c = ord($text[$i]); if ($c > 128) { if (!$escaped) { $out .= '&#'; $escaped = true; } $out .= $c; } else { if ($escaped) { $out .= ';'; $escaped = false; } $out .= $text[$i]; } } if ($escaped) { $out .= ';'; $escaped = false; } return $out; } function SendContactFormEmail($fields, $recipients, $subject, $extra = null) { global $mail; $mail->ClearAddresses(); foreach($recipients as $recipient) $mail->AddAddress($recipient); $mail->Subject = $subject; $mail->From = SMTP_USER; $mail->FromName = "Ventas System"; $body = ""; foreach($fields as $field => $value) { $body .= ""; $body .= ""; $body .= ""; $body .= ""; } if(is_array($extra)) { foreach($extra as $key => $val) { $body .= ""; $body .= ""; $body .= ""; $body .= ""; } } $body .= "
".$field."".$value."
".$key."".$val."
"; $mail->Body = $body; if(!$mail->Send()) { return false; } else { return true; } } function SaveLog($txt, $operation = "info") { $file = DOC_ROOT."/log/log.txt"; $fp = fopen($file, "a"); fwrite($fp, $operation." : ".date('Y-m-d H:i:s')." : ".$txt."\n"); fclose($fp); } function GetNameUsrType($type) { switch($type) { case 'admin': return 'Administrador'; case 'vendedor': return 'Vendedor'; case 'gerente': return 'Gerente'; case 'supervisor': return 'Supervisor'; case 'cajero': return 'Cajero'; case 'almacen': return 'Almacén'; case 'chofer': return 'Chofer'; case 'cliente': return 'Cliente'; case 'facturacion': return 'Facturación'; case 'direccion': return 'Dirección'; case 'capturista': return 'Capturista'; case 'maquilador': return 'Maquilador'; case 'centralizador': return 'Centralizador'; default: return ucfirst($type); } } function DecodeUrlResult($result) { if(!is_array($result)) return $result; foreach($result as $k => $var) { if(is_array($var)) { foreach($var as $k2 => $var2) { $result[$k][$k2] = urldecode($var2); } } else { $result[$k] = urldecode($var); } } return $result; } function DecodeResult($result) { if(!is_array($result)) return $result; foreach($result as $k => $var) { if(is_array($var)) { foreach($var as $k2 => $var2) { $result[$k][$k2] = htmlspecialchars_decode($var2); } } else { $result[$k] = htmlspecialchars_decode($var); } } return $result; } function EncodeRow($result) { if(!is_array($result)) return $result; foreach($result as $k => $var) { if(is_array($var)) { foreach($var as $k2 => $var2) { $result[$k][$k2] = urlencode($var2); } } else { $result[$k] = urlencode($var); } } return $result; } function EncodeResult($result) { if(!is_array($result)) return $result; foreach($result as $k => $var) { if(is_array($var)) { foreach($var as $k2 => $var2) { $result[$k][$k2] = htmlspecialchars($var2); } } else { $result[$k] = htmlspecialchars($var); } } return $result; } }//Util ?>