/** * Returns a new PacientefacturacionQuery object. * * @param string $modelAlias The alias of a model in the query * @param PacientefacturacionQuery|Criteria $criteria Optional Criteria to build the query from * * @return PacientefacturacionQuery */ public static function create($modelAlias = null, $criteria = null) { if ($criteria instanceof PacientefacturacionQuery) { return $criteria; } $query = new PacientefacturacionQuery(null, null, $modelAlias); if ($criteria instanceof Criteria) { $query->mergeWith($criteria); } return $query; }
/** * Returns the number of related Pacientefacturacion objects. * * @param Criteria $criteria * @param boolean $distinct * @param PropelPDO $con * @return int Count of related Pacientefacturacion objects. * @throws PropelException */ public function countPacientefacturacions(Criteria $criteria = null, $distinct = false, PropelPDO $con = null) { $partial = $this->collPacientefacturacionsPartial && !$this->isNew(); if (null === $this->collPacientefacturacions || null !== $criteria || $partial) { if ($this->isNew() && null === $this->collPacientefacturacions) { return 0; } if ($partial && !$criteria) { return count($this->getPacientefacturacions()); } $query = PacientefacturacionQuery::create(null, $criteria); if ($distinct) { $query->distinct(); } return $query->filterByPaciente($this)->count($con); } return count($this->collPacientefacturacions); }
/** * Removes this object from datastore and sets delete attribute. * * @param PropelPDO $con * @return void * @throws PropelException * @throws Exception * @see BaseObject::setDeleted() * @see BaseObject::isDeleted() */ public function delete(PropelPDO $con = null) { if ($this->isDeleted()) { throw new PropelException("This object has already been deleted."); } if ($con === null) { $con = Propel::getConnection(PacientefacturacionPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); } $con->beginTransaction(); try { $deleteQuery = PacientefacturacionQuery::create()->filterByPrimaryKey($this->getPrimaryKey()); $ret = $this->preDelete($con); if ($ret) { $deleteQuery->delete($con); $this->postDelete($con); $con->commit(); $this->setDeleted(true); } else { $con->commit(); } } catch (Exception $e) { $con->rollBack(); throw $e; } }
public function enviarAction() { $request = $this->getRequest(); if ($request->isPost()) { $post_data = $request->getPost(); $factura = \FacturaQuery::create()->findPk($post_data['id']); $file = $factura->getFacturaUrlXml(); $file = explode('/tmp/xml/', $file); $file = explode('.', $file[1]); $file = $file[0]; $xml = $file . '.xml'; $pdf = $file . '.pdf'; $mail = new \PHPMailer(); $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = '******'; $mail->Password = '******'; $mail->Port = 25; $mail->From = '*****@*****.**'; $mail->FromName = 'HOSPITAL DEL VALLE DE ATEMAJAC'; $mail->addAddress($post_data['email']); // Add a recipient $mail->addAttachment($_SERVER['DOCUMENT_ROOT'] . "/tmp/xml/" . $xml); $mail->addAttachment($_SERVER['DOCUMENT_ROOT'] . "/tmp/pdf/" . $pdf); $mail->isHTML(true); $mail->Subject = 'FACTURA ELECTRONICA'; $mail->Body = 'Buen dia, Le enviamos adjunto su factura elctronica. Saludos!'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; if (!$mail->send()) { return $this->getResponse()->setContent(\Zend\Json\Json::encode(array('response' => false, 'msg' => 'Existio un error durante el envio, por favor intentelo mas tarde'))); } else { return $this->getResponse()->setContent(\Zend\Json\Json::encode(array('response' => true, 'msg' => 'Correo electronico enviado satisfactoriamente!'))); } $my_file = $pdf; // puede ser cualquier formato $my_path = $_SERVER['DOCUMENT_ROOT'] . "/tmp/pdf/"; $my_name = "HOSPITAL DEL VALLE DE ATEMAJAC"; $my_mail = "*****@*****.**"; $my_replyto = "*****@*****.**"; $my_subject = "FACTURA ELECTRONICA"; $my_message = ""; $envio = $this->mail_attachment($my_file, $my_path, $post_data['email'], $my_mail, $my_name, $my_replyto, $my_subject, $my_message); if ($envio) { return $this->getResponse()->setContent(\Zend\Json\Json::encode(array('response' => true, 'msg' => 'Correo electronico enviado satisfactoriamente!'))); } else { return $this->getResponse()->setContent(\Zend\Json\Json::encode(array('response' => false, 'msg' => 'Existio un error durante el envio, por favor intentelo mas tarde'))); } } if ($this->params()->fromQuery('id')) { $id = $this->params()->fromQuery('id'); $factura = \FacturaQuery::create()->findPk($id); $idpaciente = $factura->getPacientefacturacion()->getPaciente()->getIdpaciente(); $facturacion = \PacientefacturacionQuery::create()->filterByIdpaciente($idpaciente)->find(); $emails = array(); foreach ($facturacion as $data) { $email = $data->getPacientefacturacionEmail(); if (!is_null($email) && !empty($email)) { $emails[$data->getIdpacientefacturacion()] = $email; } } $viewModel = new ViewModel(); $viewModel->setTerminal(true); $viewModel->setVariable('id', $id); $viewModel->setVariable('emails', $emails); return $viewModel; } $this->getResponse()->setStatusCode(404); return; }
public function getrazonessocialesAction() { $paciente_facturacion = \PacientefacturacionQuery::create()->find(); $rs_array = array(); foreach ($paciente_facturacion as $datosfacturacion) { $razon_social = $datosfacturacion->getPacientefacturacionRazonsocial(); if (!is_null($razon_social) || !empty($razon_social)) { $rs_array[$razon_social] = $razon_social; } } return $this->getResponse()->setContent(\Zend\Json\Json::encode($rs_array)); }
public function generarAction() { $request = $this->getRequest(); if ($request->isPost()) { $post_data = $request->getPost(); $cerpem = file_get_contents(__DIR__ . '/../Certificados/aad990814bp7_1210261233s.cer.pem'); $this->emisorArr['cerpem'] = $cerpem; $keypem = file_get_contents(__DIR__ . '/../Certificados/aad990814bp7_1210261233s.key.pem'); $this->emisorArr['keypem'] = $keypem; $receptorArr = \PacientefacturacionQuery::create()->findPk($post_data['idpacientefacturacion'])->toArray(\BasePeer::TYPE_FIELDNAME); $idmovimiento = $post_data['idmovimiento']; $type = explode('-', $idmovimiento); $idmovimiento = $type[1]; $type = $type[0]; switch ($type) { case 'ADM': $admision = \AdmisionQuery::create()->findPk($idmovimiento)->toArray(\BasePeer::TYPE_FIELDNAME); //Los "items" $admision_detalles_servicios = \CargoadmisionQuery::create()->filterByCargoadmisionTipo('servicio')->filterByIdadmision($idmovimiento)->find(); foreach ($admision_detalles_servicios as $detalle) { $item = $detalle->toArray(\BasePeer::TYPE_FIELDNAME); $servicio_nombre = $detalle->getServicio()->getServicioNombre(); $servicio_valorunitario = $detalle->getServicio()->getServicioPrecio(); $item['servicio_tasa'] = $detalle->getServicio()->getServicioIva(); $item['servicio_nombre'] = $servicio_nombre; $item['servicio_valorunitario'] = $servicio_valorunitario; $item['servicio_unidad'] = 'No aplica'; $admision['detalles'][] = $item; } $admision_detalles_articulo = \CargoadmisionQuery::create()->filterByCargoadmisionTipo('articulo')->filterByIdadmision($idmovimiento)->find(); foreach ($admision_detalles_articulo as $detalle) { $articulo = $detalle->getLugarinventario()->getOrdencompradetalle()->getArticuloVariante()->getArticulo(); $articulo_variante = $detalle->getLugarinventario()->getOrdencompradetalle()->getArticuloVariante(); $articulo_nombre = ''; $articulo_nombre .= $articulo->getArticuloNombre() . ' '; //Descripcion $articuloVarianteValorCollection = \ArticulovariantevalorQuery::create()->filterByIdarticulovariante($articulo_variante->getIdarticulovariante())->find(); $propiedadCount = 0; foreach ($articuloVarianteValorCollection as $kavv => $vavv) { $propiedadCount++; $articulo_nombre .= \PropiedadQuery::create()->findOneByIdpropiedad($vavv->getIdpropiedad())->getPropiedadNombre(); //Propiedad $articulo_nombre .= ':' . \PropiedadvalorQuery::create()->findOneByIdpropiedadvalor($vavv->getIdpropiedadvalor())->getPropiedadvalorNombre(); //PropiedadValor if ($propiedadCount < $articuloVarianteValorCollection->count()) { $articulo_nombre .= ' - '; } } $item = $detalle->toArray(\BasePeer::TYPE_FIELDNAME); $item['articulo_nombre'] = $articulo_nombre; $item['articulo_unidad'] = 'pieza'; $item['articulo_valorunitario'] = $articulo_variante->getArticulovariantePrecio(); $item['articulo_tasa'] = $articulo_variante->getArticulovarianteIva(); $admision['detalles'][] = $item; } $generalOrder = $admision; break; case 'CON': $consulta = \ConsultaQuery::create()->findPk($idmovimiento)->toArray(\BasePeer::TYPE_FIELDNAME); //Los "items" $consulta_detalles_servicios = \CargoconsultaQuery::create()->filterByCargoconsultaTipo('servicio')->filterByIdconsulta($idmovimiento)->find(); foreach ($consulta_detalles_servicios as $detalle) { $item = $detalle->toArray(\BasePeer::TYPE_FIELDNAME); $servicio_nombre = $detalle->getServicio()->getServicioNombre(); $servicio_valorunitario = $detalle->getServicio()->getServicioPrecio(); $item['servicio_tasa'] = $detalle->getServicio()->getServicioIva(); $item['servicio_nombre'] = $servicio_nombre; $item['servicio_valorunitario'] = $servicio_valorunitario; $item['servicio_unidad'] = 'No aplica'; $consulta['detalles'][] = $item; } $consulta_detalles_articulo = \CargoconsultaQuery::create()->filterByCargoconsultaTipo('articulo')->filterByIdconsulta($idmovimiento)->find(); foreach ($consulta_detalles_articulo as $detalle) { $articulo = $detalle->getLugarinventario()->getOrdencompradetalle()->getArticuloVariante()->getArticulo(); $articulo_variante = $detalle->getLugarinventario()->getOrdencompradetalle()->getArticuloVariante(); $articulo_nombre = ''; $articulo_nombre .= $articulo->getArticuloNombre() . ' '; //Descripcion $articuloVarianteValorCollection = \ArticulovariantevalorQuery::create()->filterByIdarticulovariante($articulo_variante->getIdarticulovariante())->find(); $propiedadCount = 0; foreach ($articuloVarianteValorCollection as $kavv => $vavv) { $propiedadCount++; $articulo_nombre .= \PropiedadQuery::create()->findOneByIdpropiedad($vavv->getIdpropiedad())->getPropiedadNombre(); //Propiedad $articulo_nombre .= ':' . \PropiedadvalorQuery::create()->findOneByIdpropiedadvalor($vavv->getIdpropiedadvalor())->getPropiedadvalorNombre(); //PropiedadValor if ($propiedadCount < $articuloVarianteValorCollection->count()) { $articulo_nombre .= ' - '; } } $item = $detalle->toArray(\BasePeer::TYPE_FIELDNAME); $item['articulo_nombre'] = $articulo_nombre; $item['articulo_unidad'] = 'pieza'; $item['articulo_valorunitario'] = $articulo_variante->getArticulovariantePrecio(); $item['articulo_tasa'] = $articulo_variante->getArticulovarianteIva(); $consulta['detalles'][] = $item; } $generalOrder = $consulta; break; case 'VP': $venta = \VentaQuery::create()->findPk($idmovimiento)->toArray(\BasePeer::TYPE_FIELDNAME); //Los "items" $venta_detalles_servicios = \CargoventaQuery::create()->filterByCargoventaTipo('servicio')->filterByIdventa($idmovimiento)->find(); foreach ($venta_detalles_servicios as $detalle) { $item = $detalle->toArray(\BasePeer::TYPE_FIELDNAME); $servicio_nombre = $detalle->getServicio()->getServicioNombre(); $servicio_valorunitario = $detalle->getServicio()->getServicioPrecio(); $item['servicio_tasa'] = $detalle->getServicio()->getServicioIva(); $item['servicio_nombre'] = $servicio_nombre; $item['servicio_valorunitario'] = $servicio_valorunitario; $item['servicio_unidad'] = 'No aplica'; $venta['detalles'][] = $item; } $venta_detalles_articulo = \CargoventaQuery::create()->filterByCargoventaTipo('articulo')->filterByIdventa($idmovimiento)->find(); foreach ($venta_detalles_articulo as $detalle) { $articulo = $detalle->getLugarinventario()->getOrdencompradetalle()->getArticuloVariante()->getArticulo(); $articulo_variante = $detalle->getLugarinventario()->getOrdencompradetalle()->getArticuloVariante(); $articulo_nombre = ''; $articulo_nombre .= $articulo->getArticuloNombre() . ' '; //Descripcion $articuloVarianteValorCollection = \ArticulovariantevalorQuery::create()->filterByIdarticulovariante($articulo_variante->getIdarticulovariante())->find(); $propiedadCount = 0; foreach ($articuloVarianteValorCollection as $kavv => $vavv) { $propiedadCount++; $articulo_nombre .= \PropiedadQuery::create()->findOneByIdpropiedad($vavv->getIdpropiedad())->getPropiedadNombre(); //Propiedad $articulo_nombre .= ':' . \PropiedadvalorQuery::create()->findOneByIdpropiedadvalor($vavv->getIdpropiedadvalor())->getPropiedadvalorNombre(); //PropiedadValor if ($propiedadCount < $articuloVarianteValorCollection->count()) { $articulo_nombre .= ' - '; } } $item = $detalle->toArray(\BasePeer::TYPE_FIELDNAME); $item['articulo_nombre'] = $articulo_nombre; $item['articulo_unidad'] = 'pieza'; $item['articulo_valorunitario'] = $articulo_variante->getArticulovariantePrecio(); $item['articulo_tasa'] = $articulo_variante->getArticulovarianteIva(); $venta['detalles'][] = $item; } $generalOrder = $venta; break; } // Aqui hacer conexion con el timbrador $bridgeFacturas = new \Facturacion\Timbradores\BridgeFacturas('finkok'); //// A la pasarela ------------------------------------------------------------ $res = $bridgeFacturas->timbrar('factura', $type, $generalOrder, $this->emisorArr, $receptorArr); //Verificamos que no exista error al timbrar if (isset($res['error']) && $res['error'] != '') { $details = $res['error']; return $this->getResponse()->setContent(\Zend\Json\Json::encode(array('response' => false, 'details' => $details))); } else { $xmlTimbrado = $res['response']; $filePathXML = '/tmp/xml/' . $res['xmlId'] . '.xml'; $filePathPDF = '/tmp/pdf/' . $res['xmlId'] . '.pdf'; //Generamos la url del qrcode $qr_main = 'http://chart.googleapis.com/chart?chs=200x200&cht=qr&chl='; $qr_url .= 're=' . $this->emisorArr['rfc']; //Emisor $qr_url .= '&rr=' . $receptorArr['pacientefacturacion_rfc']; //Receptor $qr_url .= '&tt=' . $this->numberTo17Digits($xmlArray["Comprobante"]["total"]); $qr_url .= '&id=' . $xmlArray['TimbreFiscalDigital']['UUID']; $qr_url = $qr_main . urlencode($qr_url) . '.png'; //http://chart.googleapis.com/chart?cht=qr&chl=Hello+world&choe=UTF-8&chs=200x200 //EL PDF $cfdi = $xmlTimbrado['xml']; $cadena_original = $xmlTimbrado['cadenaOriginal']; $qrcode = $qr_url; $pdf = new \Facturacion\PdfGenerator\PdfGenerator($cfdi, $cadena_original, $qrcode); $pdf->AliasNbPages(); $pdf->AddPage(); $pdf->FancyTable(); $pdf->QrCode(); $pdf->Output($_SERVER['DOCUMENT_ROOT'] . $filePathPDF, 'F'); //Guardamos los datos de la factura $factura = new \Factura(); $factura->setIddatosfacturacion($post_data['idpacientefacturacion']); if ($type == 'ADM') { $factura->setIdadmision($idmovimiento); $admision = \AdmisionQuery::create()->findPk($idmovimiento); $admision->setAdmisionFacturada(1); $admision->save(); } else { if ($type == 'CON') { $factura->setIdconsulta($idmovimiento); $consulta = \ConsultaQuery::create()->findPk($idmovimiento); $consulta->setConsultaFacturada(1); $consulta->save(); } else { $factura->setIdventa($idmovimiento); $venta = \VentaQuery::create()->findPk($idmovimiento); $venta->setVentaFacturada(1); $venta->save(); } } $factura->setFacturaUrlXml($filePathXML); $factura->setFacturaUrlPdf($filePathPDF); $factura->setFacturaFecha($xmlTimbrado['fecha']); $factura->setFacturaSellosat($xmlTimbrado['SatSeal']); $factura->setFacturaCertificadosat($xmlTimbrado['NoCertificadoSAT']); $factura->setFacturaCfdi($xmlTimbrado['uuid']); $factura->setFacturaMensaje($xmlTimbrado['codEstatus']); $factura->setFacturaTipodepago('unico'); $factura->setFacturaTipo('ingreso'); $factura->setFacturaStatus('creada'); $factura->setFacturaQrcode($qr_url); $factura->save(); $this->flashMessenger()->addMessage('Factura emitida exitosamente!'); return $this->getResponse()->setContent(\Zend\Json\Json::encode(array('response' => true))); } } if ($this->params()->fromRoute('id')) { $id = $this->params()->fromRoute('id'); $type = explode('-', $id); $id = $type[1]; $type = $type[0]; $factura_info = array(); switch ($type) { case 'ADM': $admision = \AdmisionQuery::create()->findPk($id); $factura_info['fecha'] = $admision->getAdmisionFechaadmision('d-m-Y H:i'); $factura_info['id'] = 'ADM-' . $admision->getIdadmision(); $factura_info['paciente'] = $admision->getPaciente()->getPacienteNombre() . ' ' . $admision->getPaciente()->getPacienteAp() . ' ' . $admision->getPaciente()->getPacienteAm(); $factura_info['idpaciente'] = $admision->getPaciente()->getIdpaciente(); $factura_info['medico'] = $admision->getMedico()->getMedicoNombre() . ' ' . $admision->getMedico()->getMedicoApellidopaterno() . ' ' . $admision->getMedico()->getMedicoApellidomaterno(); $factura_info['pagada'] = $admision->getAdmisionPagadaen('d-m-Y H:i'); $factura_info['tipo_pago'] = $admision->getAdmisionTipodepago(); $factura_info['total'] = $admision->getAdmisionTotal(); $factura_info['tipo'] = 'admision'; $direcciones = \PacientefacturacionQuery::create()->filterByIdpaciente($admision->getPaciente()->getIdpaciente())->find()->toArray(null, false, \BasePeer::TYPE_FIELDNAME); break; case 'CON': $consulta = \ConsultaQuery::create()->findPk($id); $factura_info['fecha'] = $consulta->getConsultaFecha('d-m-Y'); $factura_info['fecha'] .= ' ' . $consulta->getConsultaHora(); $factura_info['id'] = 'CON-' . $consulta->getIdconsulta(); $factura_info['paciente'] = $consulta->getPaciente()->getPacienteNombre() . ' ' . $consulta->getPaciente()->getPacienteAp() . ' ' . $consulta->getPaciente()->getPacienteAm(); $factura_info['idpaciente'] = $consulta->getPaciente()->getIdpaciente(); $factura_info['medico'] = $consulta->getMedico()->getMedicoNombre() . ' ' . $consulta->getMedico()->getMedicoApellidopaterno() . ' ' . $consulta->getMedico()->getMedicoApellidomaterno(); $factura_info['pagada'] = $consulta->getConsultaFecha('d-m-Y'); $factura_info['pagada'] .= ' ' . $consulta->getConsultaHora(); $factura_info['tipo_pago'] = $consulta->getConsultaTipodepago(); $factura_info['total'] = $consulta->getConsultaTotal(); $factura_info['tipo'] = 'consulta'; $direcciones = \PacientefacturacionQuery::create()->filterByIdpaciente($consulta->getPaciente()->getIdpaciente())->find()->toArray(null, false, \BasePeer::TYPE_FIELDNAME); break; case 'VP': $venta = \VentaQuery::create()->findPk($id); $factura_info['fecha'] = $venta->getVentaFecha('d-m-Y H:i'); $factura_info['id'] = 'VP-' . $venta->getIdventa(); $factura_info['paciente'] = $venta->getPaciente()->getPacienteNombre() . ' ' . $venta->getPaciente()->getPacienteAp() . ' ' . $venta->getPaciente()->getPacienteAm(); $factura_info['idpaciente'] = $venta->getPaciente()->getIdpaciente(); $factura_info['medico'] = 'N/A'; $factura_info['pagada'] = $venta->getVentaFecha('d-m-Y H:i'); $factura_info['tipo_pago'] = $venta->getVentaTipodepago(); $factura_info['total'] = $venta->getVentaTotal(); $factura_info['tipo'] = 'venta al publico'; $direcciones = \PacientefacturacionQuery::create()->filterByIdpaciente(1)->find()->toArray(null, false, \BasePeer::TYPE_FIELDNAME); break; } return new ViewModel(array('general_info' => $factura_info, 'facturacion_info' => $direcciones)); } $this->getResponse()->setStatusCode(404); return; }
/** * Get the associated Pacientefacturacion object * * @param PropelPDO $con Optional Connection object. * @param $doQuery Executes a query to get the object if required * @return Pacientefacturacion The associated Pacientefacturacion object. * @throws PropelException */ public function getPacientefacturacion(PropelPDO $con = null, $doQuery = true) { if ($this->aPacientefacturacion === null && $this->iddatosfacturacion !== null && $doQuery) { $this->aPacientefacturacion = PacientefacturacionQuery::create()->findPk($this->iddatosfacturacion, $con); /* The following can be used additionally to guarantee the related object contains a reference to this object. This level of coupling may, however, be undesirable since it could result in an only partially populated collection in the referenced object. $this->aPacientefacturacion->addFacturas($this); */ } return $this->aPacientefacturacion; }