Util()->ValidateInteger($value); $this->comprobanteId = $value; } public function setSucursalId($value) { $this->Util()->ValidateInteger($value); $this->sucursalId = $value; } public function setNombre($value) { $this->Util()->ValidateString($value, $max_chars=30, $minChars = 0, 'Nombre'); $this->nombre = $value; } public function setRfc($value) { $this->Util()->ValidateString($value, $max_chars=12, $minChars = 0, 'RFC'); $this->rfc = $value; } public function setMes($value) { $this->Util()->ValidateInteger($value); $this->mes = $value; } public function setAnio($value) { $this->Util()->ValidateInteger($value); $this->anio = $value; } public function setTiposComprobanteId($value) { $this->Util()->ValidateInteger($value); $this->tiposComprobanteId = $value; } public function setMotivoCancelacion($value) { $this->Util()->ValidateString($value, $max_chars=12, $minChars = 1, 'Motivo de Cancelación'); $this->motivoCancelacion = $value; } public function setStatus($value) { $this->status = $value; } function Info() { $sql = 'SELECT * FROM comprobante WHERE comprobanteId = "'.$this->comprobanteId.'"'; $this->Util()->DBSelect($_SESSION["empresaId"])->setQuery($sql); $row = $this->Util()->DBSelect($_SESSION["empresaId"])->GetRow(); return $row; } function GetVentaId() { $sql = 'SELECT ventaId FROM venta WHERE comprobanteId = "'.$this->comprobanteId.'"'; $this->Util()->DBSelect($_SESSION["empresaId"])->setQuery($sql); $ventaId = $this->Util()->DBSelect($_SESSION["empresaId"])->GetSingle(); return $ventaId; } function Buscar() { $sqlAdd = ''; if($this->nombre) $sqlAdd = ' AND clte.nombre LIKE "%'.$this->nombre.'%"'; if($this->rfc) $sqlAdd = ' AND clte.rfc LIKE "%'.$this->rfc.'%"'; if($this->mes) $sqlAdd .= ' AND EXTRACT(MONTH FROM comp.fecha) = "'.$this->mes.'"'; if($this->anio) $sqlAdd .= ' AND EXTRACT(YEAR FROM comp.fecha) = "'.$this->anio.'"'; if($this->status != '') $sqlAdd .= ' AND comp.status = "'.$this->status.'"'; if($this->tiposComprobanteId) $sqlAdd .= ' AND comp.tiposComprobanteId = "'.$this->tiposComprobanteId.'"'; $sql = 'SELECT comp.* FROM comprobante AS comp, cliente AS clte WHERE comp.userId = clte.clienteId AND comp.sucursalId = "'.$this->sucursalId.'" AND facturaGlobal = "0" '.$sqlAdd.' ORDER BY comp.fecha DESC '; $this->Util()->DBSelect($_SESSION["empresaId"])->setQuery($sql); $comprobantes = $this->Util()->DBSelect($_SESSION["empresaId"])->GetResult(); $data["items"] = $comprobantes; $data["pages"] = array(); return $data; }//Buscar function BuscarMens() { $sqlAdd = ''; if($this->mes) $sqlAdd .= ' AND EXTRACT(MONTH FROM fecha) = "'.$this->mes.'"'; if($this->anio) $sqlAdd .= ' AND EXTRACT(YEAR FROM fecha) = "'.$this->anio.'"'; if($this->status != '') $sqlAdd .= ' AND status = "'.$this->status.'"'; if($this->tiposComprobanteId) $sqlAdd .= ' AND tiposComprobanteId = "'.$this->tiposComprobanteId.'"'; $sql = 'SELECT * FROM comprobante WHERE sucursalId = "'.$this->sucursalId.'" AND facturaGlobal = "1" '.$sqlAdd.' ORDER BY fecha DESC'; $this->Util()->DBSelect($_SESSION["empresaId"])->setQuery($sql); $comprobantes = $this->Util()->DBSelect($_SESSION["empresaId"])->GetResult(); $data["items"] = $comprobantes; $data["pages"] = array(); return $data; }//BuscarMens function SendComprobante(){ global $comprobante; global $rfc; global $cliente; $infC = $comprobante->GetInfoComprobante($this->comprobanteId); $clienteId = $infC['userId']; $cliente->setClienteId($clienteId); $infU = $cliente->Info(); $nombre = $infU['nombre']; $email = $infU['email']; $rfcId = $infC['rfcId']; $empresaId = $infC['empresaId']; $serie = $infC['serie']; $folio = $infC['folio']; $archivo = $empresaId.'_'.$serie.'_'.$folio.'.pdf'; $enlace = DOC_ROOT.'/empresas/'.$empresaId.'/certificados/'.$rfcId.'/facturas/pdf/'.$archivo; if($_SESSION["version"] == "v3" || $_SESSION["version"] == "construc") { $archivo_xml = "SIGN_".$empresaId.'_'.$serie.'_'.$folio.'.xml'; } else { $archivo_xml = $empresaId.'_'.$serie.'_'.$folio.'.xml'; } $enlace_xml = DOC_ROOT.'/empresas/'.$empresaId.'/certificados/'.$rfcId.'/facturas/xml/'.$archivo_xml; $rfc->setRfcId($rfcId); $info = $rfc->Info(); $mail = new PHPMailer(); $mail->Host = 'localhost'; $mail->From = 'facturacion@novomoda.com'; $mail->FromName = urldecode($info["razonSocial"]); $mail->Subject = 'Envio de Factura con Folio No. '.$folio; $mail->AddAddress($email, ''); $body = "Favor de revisar el archivo adjunto para ver factura.\r\n"; $body .= "\r\n"; $body .= "Gracias.\r\n"; $body .= "www.novomoda.com\r\n"; $mail->Body = $body; //Adjuntamos un archivo $mail->AddAttachment($enlace, 'Factura_'.$folio.'.pdf'); $mail->AddAttachment($enlace_xml, 'XML_Factura_'.$folio.'.xml'); $mail->Send(); $this->Util()->setError(20023, 'complete'); $this->Util()->PrintErrors(); }//SendComprobante function CancelarComprobante(){ global $comprobante; if($this->Util()->PrintErrors()) { return false; } $comprobanteId = $this->comprobanteId; $motivoCancelacion = $this->motivoCancelacion; $date = date("Y-m-d"); $sqlQuery = 'UPDATE comprobante SET motivoCancelacion = "'.utf8_encode($motivoCancelacion).'", status = "0", fechaPedimento = "'.$date.'" WHERE comprobanteId = '.$comprobanteId; $this->Util()->DBSelect($_SESSION["empresaId"])->setQuery($sqlQuery); $this->Util()->DBSelect($_SESSION["empresaId"])->UpdateData(); $sqlQuery = 'SELECT data, conceptos, userId FROM comprobante WHERE comprobanteId = '.$comprobanteId; $this->Util()->DBSelect($_SESSION["empresaId"])->setQuery($sqlQuery); $row = $this->Util()->DBSelect($_SESSION["empresaId"])->GetRow(); $data = unserialize(urldecode($row['data'])); $conceptos = unserialize(urldecode($row['conceptos'])); $_SESSION["conceptos"] = array(); $_SESSION["conceptos"] = $conceptos; $comprobante->CancelarComprobante($data, $comprobanteId, false, $row["userId"]); $this->Util()->setError(20091, "complete"); $this->Util()->PrintErrors(); return true; }//CancelarComprobante function LoadConceptoPublico($notas, $fechaIni, $fechaFin) { if($this->Util()->PrintErrors()){ return false; } $info['sucursalId'] = $_SESSION['idSuc']; $count = 0; $this->Util()->DBSelect($_SESSION["empresaId"])->setQuery("SELECT iva FROM sucursal WHERE sucursalId ='".$info["sucursalId"]."'"); $ivaPercent = $this->Util()->DBSelect($_SESSION["empresaId"])->GetSingle(); $subtotal = 0; $iva = 0; $notasFacturadas = ''; $rangos = array(); $folioIni = 0; $folioAnt = 0; if($notas){ foreach($notas as $id){ $this->Util()->DBSelect($_SESSION["empresaId"])->setQuery("SELECT * FROM venta WHERE ventaId = '".$id."'"); $infV = $this->Util()->DBSelect($_SESSION["empresaId"])->GetRow(); if($infV['subtotalDesc'] > 0){ $subtotal += $infV['subtotalDesc']; $iva += $infV['ivaDesc']; }else{ $subtotal += $infV['subtotal']; $iva += $infV['iva']; }//else //Agrupamos $folio = $infV['folio']; if($folioAnt == 0){ $folioAnt = $folio; $folioIni = $folio; $resta = 0; } $resta = $folio - $folioAnt; if($resta >= 2){ if($folioIni == $folioAnt) $rangos[] = $folioIni; else $rangos[] = $folioIni.'-'.$folioAnt; $folioIni = $folio; $folioAnt = $folio; } $folioAnt = $folio; }//foreach } if($folioIni == $folioAnt) $rangos[] = $folioIni; else $rangos[] = $folioIni.'-'.$folioAnt; $notasFacturadas = implode(', ',$rangos); $fechaIni = date('d-m-Y',strtotime($fechaIni)); $fechaFin = date('d-m-Y',strtotime($fechaFin)); $_SESSION["conceptos"][$count]["noIdentificacion"] = "PEG"; $_SESSION["conceptos"][$count]["cantidad"] = 1; $_SESSION["conceptos"][$count]["unidad"] = "No Aplica"; $_SESSION["conceptos"][$count]["valorUnitario"] = $subtotal; $_SESSION["conceptos"][$count]["importe"] = $subtotal; $_SESSION["conceptos"][$count]["hardCodedIva"] = $iva; $_SESSION["conceptos"][$count]["excentoIva"] = "no"; $_SESSION["conceptos"][$count]["descripcion"] = urldecode("Factura correspondiente a los tickets de venta del ".$fechaIni." al ".$fechaFin.": ".$notasFacturadas); return true; }//LoadConceptoPublico function GetTotalDesglosado() { $values = explode("&", $_POST["form"]); foreach($values as $key => $val) { $array = explode("=", $values[$key]); $data[$array[0]] = $array[1]; } $ivaForm = $data['tasaIva']; if(!$_SESSION["conceptos"]) { return false; } $data["subtotal"] = 0; $data["descuento"] = 0; $data["iva"] = 0; $data["ieps"] = 0; $data["retIva"] = 0; $data["retIsr"] = 0; $data["total"] = 0; foreach($data as $key => $value) { $data[$key] = $this->Util()->RoundNumber($data[$key]); } $info['sucursalId'] = $_SESSION['idSuc']; $this->Util()->DBSelect($_SESSION["empresaId"])->setQuery(" SELECT * FROM sucursal LEFT JOIN rfc ON rfc.rfcId = sucursal.rfcId WHERE sucursal.sucursalId ='".$info["sucursalId"]."'"); $sucursal = $this->Util()->DBSelect($_SESSION["empresaId"])->GetRow(); $suc['iva'] = $ivaForm; foreach($_SESSION["conceptos"] as $key => $concepto) { $data["subtotalOriginal"] = $this->Util()->RoundNumber($data["subtotalOriginal"] + $importe); $data["subtotal"] = $this->Util()->RoundNumber($data["subtotal"] + $concepto["importe"]); if($concepto["excentoIva"] == "si") { $_SESSION["conceptos"][$key]["tasaIva"] = 0; } else { $_SESSION["conceptos"][$key]["tasaIva"] = $suc["iva"]; } if($data["porcentajeDescuento"]) { $data["porcentajeDescuento"]; } $data["descuentoThis"] = $this->Util()->RoundNumber($_SESSION["conceptos"][$key]["importe"] * ($data["porcentajeDescuento"] / 100)); $data["descuento"] += $data["descuentoThis"]; $afterDescuento = $_SESSION["conceptos"][$key]["importe"] - $data["descuentoThis"]; if($concepto["excentoIva"] == "si") { $_SESSION["conceptos"][$key]["tasaIva"] = 0; } else { $_SESSION["conceptos"][$key]["tasaIva"] = $suc["iva"]; } $data["ivaThis"] = $this->Util()->RoundNumber($afterDescuento * ($_SESSION["conceptos"][$key]["tasaIva"] / 100)); if(isset($_SESSION["conceptos"][$key]["hardCodedIva"])) { $data["iva"] = $_SESSION["conceptos"][$key]["hardCodedIva"]; } else { $data["iva"] += $data["ivaThis"]; } } $data["impuestos"] = $_SESSION["impuestos"]; $afterDescuento = $data["subtotal"] - $data["descuento"]; $data["afterDescuento"] = $afterDescuento; $data["afterIva"] = $afterDescuento + $data["iva"]; if(!$data["porcentajeIEPS"]) { $data["porcentajeIEPS"] = 0; } $data["ieps"] = $this->Util()->RoundNumber($data["afterDescuento"] * ($data["porcentajeIEPS"] / 100)); $afterImpuestos = $afterDescuento + $data["iva"] + $data["ieps"]; $data["afterImpuestos"] = $afterImpuestos; $data["retIva"] = $this->Util()->RoundNumber($data["afterDescuento"] * ($data["porcentajeRetIva"] / 100)); $data["retIsr"] = $this->Util()->RoundNumber($data["afterDescuento"] * ($data["porcentajeRetIsr"] / 100)); $data["total"] = $this->Util()->RoundNumber($data["subtotal"] - $data["descuento"] + $data["iva"] + $data["ieps"] - $data["retIva"] - $data["retIsr"]); return $data; } }//Facturacion ?>