コード例 #1
0
 public function postNueva()
 {
     try {
         if (!Session::has('cliente')) {
             Session::flash('mensajeError', 'Debes seleccionar un cliente para continuar.');
             return Redirect::to('carrito');
         }
         $input = Input::all();
         $factura = new Factura();
         $factura->cliente_id = Session::get('cliente')->id;
         $factura->vencimiento = $input['vencimiento'];
         $factura->pedido = $input['pedido'];
         $factura->estado = 'pendiente';
         $factura->notas = $input['notas'];
         $factura->user_id = Auth::user()->id;
         $factura->save();
         if (self::guardarItems($factura->id) === false) {
             $factura->delete();
             Session::flash('mensajeError', 'No fue posible guardar la factura.');
             return Redirect::to('carrito');
         }
         Session::forget('carrito');
         Session::forget('cliente');
         Session::flash('mensajeOk', 'Has creado la factura ' . $factura->id . ' con éxito.');
         return Redirect::to('facturas/filtro-por-id/' . $factura->id);
     } catch (Exception $e) {
         Session::flash('mensajeError', 'No fue posible guardar la factura.');
         return Redirect::to('carrito');
     }
 }
コード例 #2
0
 public function postFacturas()
 {
     date_default_timezone_set('America/Caracas');
     //comprobamos si es una petición ajax
     if (Request::ajax()) {
         //validamos el formulario
         $registerData = array('factura' => Input::get('factura'), 'fecha_fac' => Input::get('fecha_fac'), 'n_factura' => Input::get('n_factura'), 'n_control' => Input::get('n_control'), 'n_nota_debito' => Input::get('n_nota_debito'), 'n_nota_credito' => Input::get('n_nota_credito'), 'tipo_transa' => Input::get('tipo_transa'), 'n_fact_ajustada' => Input::get('n_fact_ajustada'), 'total_compra' => Input::get('total_compra'), 'exento' => Input::get('exento'), 'base_imp' => Input::get('base_imp'), 'iva' => Input::get('iva'), 'impuesto_iva' => Input::get('impuesto_iva'), 'iva_retenido' => Input::get('iva_retenido'), 'id_proveedor' => Input::get('id_proveedor'), 'id_user' => Input::get('id_user'), 'update_user' => Input::get('update_user'), 'id_reporte' => Input::get('id_reporte'));
         $rules = array('factura' => 'unique:facturas', 'fecha_fac' => 'required', 'n_factura' => '', 'n_control' => 'required', 'n_nota_debito' => '', 'n_nota_credito' => '', 'tipo_transa' => 'required', 'n_fact_ajustada' => '', 'total_compra' => 'required|numeric', 'exento' => 'numeric', 'base_imp' => 'numeric', 'iva' => '', 'impuesto_iva' => 'numeric', 'iva_retenido' => 'numeric', 'id_user' => '', 'update_user' => '', 'id_reporte' => '');
         $messages = array('required' => 'El campo :attribute es obligatorio.', 'min' => 'El campo :attribute no puede tener menos de :min carácteres.', 'email' => 'El campo :attribute debe ser un email válido.', 'max' => 'El campo :attribute no puede tener más de :max carácteres.', 'unique' => 'La factura ingresada ya está agregada en la base de datos.', 'confirmed' => 'Los passwords no coinciden.');
         $validation = Validator::make(Input::all(), $rules, $messages);
         //si la validación falla redirigimos al formulario de registro con los errores
         if ($validation->fails()) {
             //como ha fallado el formulario, devolvemos los datos en formato json
             //esta es la forma de hacerlo en laravel, o una de ellas
             return Response::json(array('success' => false, 'errors' => $validation->getMessageBag()->toArray()));
             //en otro caso ingresamos al usuario en la tabla usuarios
         } else {
             //creamos un nuevo usuario con los datos del formulario
             $content = new Factura($registerData);
             $content->save();
             //si se realiza correctamente la inserción envíamos un mensaje
             //conforme se ha registrado correctamente
             if ($content) {
                 $facturas = DB::table('facturas')->get();
                 return Response::json(array('success' => true, 'message' => "<h3></h3>", 'facturas' => $facturas));
             }
         }
     }
 }
コード例 #3
0
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $this->pageTitle = 'Incorporar Bien';
     $user = Usuario::model()->findbyPk(Yii::app()->user->getId());
     $model = new Bienmueble();
     $factura = new Factura();
     $movimiento = new BmMovimiento();
     date_default_timezone_set('America/Caracas');
     $fecha = date('Y-m-d H:i:s');
     $model->f_incorporacion = $fecha;
     $movimiento->dependencia_id = $user->dependencia_id;
     if (isset($_POST['Bienmueble'])) {
         $model->attributes = $_POST['Bienmueble'];
         //print_r();exit;
         $movimiento->attributes = $_POST['BmMovimiento'];
         $model->cantidad = 1;
         $model->status_id = 1;
         $model->factura_id = 1;
         if (isset($_POST['Factura'])) {
             $factura->attributes = $_POST['Factura'];
             $factura->fecha = $model->f_incorporacion;
             if ($factura->save()) {
                 $model->factura_id = $factura->id;
             }
         }
         $model->f_actualizacion = $model->f_incorporacion;
         $model->valor_referencial = $model->valor_unitario;
         if ($model->save()) {
             $movimiento->bienmueble_id = $model->id;
             $movimiento->fecha = $model->f_incorporacion;
             if ($movimiento->save()) {
                 $model->ult_mov_id = $movimiento->id;
                 if ($model->update()) {
                     $bita = new Bitacora();
                     $bita->dependencia_id = $user->dependencia_id;
                     $bita->fecha = $fecha;
                     $bita->operacion_id = 2;
                     // CREAR
                     $bita->objeto_id = 1;
                     // Bienmueble
                     $bita->usuario_id = $user->id;
                     $bita->observacion = 'Se crea BM ' . $model->codigo . ' (ID:' . $model->id . ')';
                     if ($bita->save()) {
                     }
                     $this->redirect(array('view', 'id' => $model->id));
                 }
             } else {
                 //print_r($movimiento->getErrors()); exit;
             }
         }
     }
     $dps = Dependencia::model()->findAll(array('condition' => 'sede_id=1', 'order' => 'descripcion ASC'));
     $clases = BmClasificacion::model()->listAll();
     $tipos = BmTipo::model()->findAll(array('order' => 'descripcion'));
     $conceptos = Concepto::model()->findAll(array('condition' => 'id>0 AND id<20 AND id<>2 AND id<>15 AND id<>16 AND id<>17'));
     $this->render('create', array('model' => $model, 'movimiento' => $movimiento, 'dps' => $dps, 'clases' => $clases, 'tipos' => $tipos, 'conceptos' => $conceptos, 'factura' => $factura, 'acceso' => $user->rol_id));
 }
コード例 #4
0
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new Factura();
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['Factura'])) {
         $model->attributes = $_POST['Factura'];
         if ($model->save()) {
             $this->redirect(array('view', 'id' => $model->id));
         }
     }
     $this->render('create', array('model' => $model));
 }
コード例 #5
0
ファイル: Factura.php プロジェクト: JLuisJ7/sysfip
 public function agregarFactura($nroSerie, $nroFact, $idCliente, $idEmpleado, $subTotal, $IGV, $Total)
 {
     $resultado = array('valor' => 1, 'message' => 'Su solicitud ha sido procesada correctamente.');
     $Factura = new Factura();
     $Factura->nroSerie = $nroSerie;
     $Factura->nroFact = $nroFact;
     $Factura->idCliente = $idCliente;
     $Factura->idEmpleado = $idEmpleado;
     $Factura->subTotal = $subTotal;
     $Factura->IGV = $IGV;
     $Factura->Total = $Total;
     if (!$Factura->save()) {
         $resultado = array('valor' => 0, 'message' => 'No hemos podido realizar su solicitud, intentelo nuevamente');
     }
     return $resultado;
 }
コード例 #6
0
ファイル: actions.class.php プロジェクト: kcornejo/usac
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
 public function executeIndex(sfWebRequest $request)
 {
     $this->form = new VentaCabeceraForm(array('Fecha' => date('d/m/Y')));
     if ($request->isMethod('POST')) {
         $this->form->bind($request->getParameter('venta_cabecera'));
         if ($this->form->isValid()) {
             $valores = $this->form->getValues();
             $Factura = new Factura();
             $Factura->setClienteId($valores['Cliente']);
             $Factura->setTipoPagoId($valores['TipoPago']);
             $Factura->setFecha($valores['Fecha']);
             $Factura->setSerie($valores['Serie']);
             $Factura->setDocumento($valores['Documento']);
             $Factura->save();
             $this->redirect('venta/detalle?id=' . $Factura->getId());
         }
     }
 }
コード例 #7
0
ファイル: BaseFacturaDetalle.php プロジェクト: kcornejo/usac
 /**
  * Performs the work of inserting or updating the row in the database.
  *
  * If the object is new, it inserts it; otherwise an update is performed.
  * All related objects are also updated in this method.
  *
  * @param PropelPDO $con
  * @return int             The number of rows affected by this insert/update and any referring fk objects' save() operations.
  * @throws PropelException
  * @see        save()
  */
 protected function doSave(PropelPDO $con)
 {
     $affectedRows = 0;
     // initialize var to track total num of affected rows
     if (!$this->alreadyInSave) {
         $this->alreadyInSave = true;
         // We call the save method on the following object(s) if they
         // were passed to this object by their coresponding set
         // method.  This object relates to these object(s) by a
         // foreign key reference.
         if ($this->aFactura !== null) {
             if ($this->aFactura->isModified() || $this->aFactura->isNew()) {
                 $affectedRows += $this->aFactura->save($con);
             }
             $this->setFactura($this->aFactura);
         }
         if ($this->aProducto !== null) {
             if ($this->aProducto->isModified() || $this->aProducto->isNew()) {
                 $affectedRows += $this->aProducto->save($con);
             }
             $this->setProducto($this->aProducto);
         }
         if ($this->aProveedor !== null) {
             if ($this->aProveedor->isModified() || $this->aProveedor->isNew()) {
                 $affectedRows += $this->aProveedor->save($con);
             }
             $this->setProveedor($this->aProveedor);
         }
         if ($this->isNew() || $this->isModified()) {
             // persist changes
             if ($this->isNew()) {
                 $this->doInsert($con);
             } else {
                 $this->doUpdate($con);
             }
             $affectedRows += 1;
             $this->resetModified();
         }
         $this->alreadyInSave = false;
     }
     return $affectedRows;
 }
コード例 #8
0
 public function process()
 {
     $factura = new Factura();
     $factura->usuario_id = Auth::user()->id;
     $factura->total = Cart::total();
     foreach (Cart::content() as $item) {
         if (Item::find($item['id'])->stock == 0) {
             Session::flash('error', 'El item ' . $item['name'] . ' se ha agotado');
             return Redirect::back();
         }
         if (Item::find($item['id'])->stock - $item['qty'] < 0) {
             Session::flash('error', 'No hay suficiente stock del item ' . $item['name'] . ' para cubrir su pedido');
             return Redirect::back();
         }
     }
     if ($factura->save()) {
         foreach (Cart::content() as $item) {
             $detalle = new Detalle();
             $detalle->factura_id = $factura->id;
             $detalle->item_id = $item['id'];
             $detalle->cantidad = $item['qty'];
             if ($detalle->save()) {
                 $deduct = Item::find($item['id']);
                 $deduct->stock -= $item['qty'];
                 $deduct->save();
             } else {
                 Session::flash('error', 'Error al procesar');
                 return Redirect::back();
             }
         }
     } else {
         Session::flash('error', 'Error al procesar');
         return Redirect::back();
     }
     Cart::destroy();
     return Redirect::to('shop');
 }
コード例 #9
0
ファイル: FacturarController.php プロジェクト: jalvarez14/hva
 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;
 }