/**
  * Envia por email la factura en formato PDF
  * @return <type>
  */
 public function enviarAction()
 {
     switch ($this->request['accion']) {
         case 'Enviar':
             $para = $this->request['Para'];
             $de = $this->request['De'];
             $deNombre = $this->request['DeNombre'];
             $conCopia = $this->request['Cc'];
             $conCopiaOculta = $this->request['Cco'];
             $asunto = $this->request['Asunto'];
             $mensaje = $this->request['Mensaje'];
             $adjuntos = array($this->request['Adjunto']);
             $envio = new Mail();
             $ok = $envio->send($para, $de, $deNombre, $conCopia, $conCopiaOculta, $asunto, $mensaje, $adjuntos);
             if ($ok) {
                 $entidad = new $this->entity($this->request['FemitidasCab']['IDFactura']);
                 $entidad->auditaEmail();
                 unset($entidad);
                 $this->values['resultadoEnvio'][] = "Envío con éxito";
             } else {
                 $this->values['resultadoEnvio'] = $envio->getMensaje();
             }
             unset($envio);
             break;
         case 'CambioFormato':
             $datos = new FemitidasCab($this->request['FemitidasCab']['IDFactura']);
             $formatos = DocumentoPdf::getFormatos($this->entity);
             $formato = $this->request['Formato'];
             if ($formato == '') {
                 $formato = 0;
             }
             $this->values['archivo'] = $this->generaPdf($this->entity, array('0' => $datos->getIDFactura()), $formato);
             $this->values['email'] = array('Para' => $this->request['Para'], 'De' => $this->request['De'], 'DeNombre' => $this->request['DeNombre'], 'Cc' => $this->request['Cc'], 'Cco' => $this->request['Cco'], 'Asunto' => $this->request['Asunto'], 'Formatos' => $formatos, 'Formato' => $formato, 'Mensaje' => $this->request['Mensaje'], 'idFactura' => $datos->getIDFactura());
             break;
         case '':
             $datos = new FemitidasCab($this->request['FemitidasCab']['IDFactura']);
             $formatos = DocumentoPdf::getFormatos($this->entity);
             $formato = $this->request['Formato'];
             if ($formato == '') {
                 $formato = 0;
             }
             $this->values['archivo'] = $this->generaPdf($this->entity, array('0' => $datos->getIDFactura()), $formato);
             $this->values['email'] = array('Para' => $datos->getIDCliente()->getEMail(), 'De' => $_SESSION['usuarioPortal']['email'], 'DeNombre' => $datos->getIDComercial()->getNombre(), 'Cco' => $_SESSION['usuarioPortal']['email'], 'Asunto' => 'Factura N. ' . $datos->getNumeroFactura(), 'Formatos' => $formatos, 'Formato' => $formato, 'Mensaje' => 'Le adjunto la factura ' . $datos->getNumeroFactura() . "\n\nUn saludo.", 'idFactura' => $datos->getIDFactura());
             break;
     }
     return parent::enviarAction();
 }
 /**
  * Crea los recibos de la factura en curso en base a la forma de pago.
  * Si el n. de vctos de la forma de pago es 0, no se crea ningún vencimiento.
  */
 public function creaVctos()
 {
     if ($this->Total == 0) {
         return;
     }
     $factura = new FemitidasCab($this->IDFactura);
     //SI LA FACTURA ES SIN IVA, EN CASO DE CREAR RECIBOS SE MARCARÁN
     //CON N. DE ASIENTO 999999 PARA QUE NO SE TRASPASEN A CONTABILIDAD.
     $tieneiva = $factura->getIva1() + $factura->getIva2() + $factura->getIva3() != 0;
     if ($tieneiva) {
         $asiento = 0;
     } else {
         $asiento = 999999;
     }
     $formaPago = $factura->getIDFP();
     $nvctos = $formaPago->getNumeroVctos();
     $fecha = new Fecha($factura->getFecha());
     $mes = $fecha->getmm();
     $dia = $fecha->getdd();
     $anio = $fecha->getaaaa();
     unset($fecha);
     if ($factura->getIDCliente()->getDiaDePago() > 0) {
         //SI TIENE UN DIA DE PAGO ESTABLECIDO, LOS VENCIMIENTOS SE CALCULAN
         //A PARTIR DE ESE DIA PERO DEL MES SIGUIENTE
         $mes = $mes + 1;
         if ($mes > 12) {
             $mes = 1;
             $anio = $anio + 1;
         }
         $dia = $factura->getIDCliente()->getDiaDePago();
     }
     if ($nvctos > 0) {
         $importe = ROUND($factura->getTotal() / $nvctos, 2);
         $diferencia = $factura->getTotal() - $importe * $nvctos;
         $i = 0;
         while ($i < $nvctos) {
             $i = $i + 1;
             if ($i == 1) {
                 $intervalo = $formaPago->getDiaPrimerVcto();
                 $importeRecibo = $importe + $diferencia;
             } else {
                 $intervalo = $intervalo + $formaPago->getDiasIntervalo();
                 $importeRecibo = $importe;
             }
             $numRecibo = str_pad($i, 2, "0", STR_PAD_LEFT) . str_pad($nvctos, 2, "0", STR_PAD_LEFT);
             $fVcto = date('Y-m-d', mktime(0, 0, 0, $mes, $dia + $intervalo, $anio));
             $recibo = new RecibosClientes();
             $recibo->setRecibo($numRecibo);
             $recibo->setIDSucursal($factura->getIDSucursal()->getIDSucursal());
             $recibo->setIDFactura($factura->getIDFactura());
             $recibo->setIDCliente($factura->getIDCliente()->getIDCliente());
             $recibo->setIDComercial($factura->getIDComercial()->getIDAgente());
             $recibo->setFecha($factura->getFecha());
             $recibo->setVencimiento($fVcto);
             $recibo->setImporte($importeRecibo);
             $recibo->setIban($factura->getIDCliente()->getIban());
             $recibo->setBic($factura->getIDCliente()->getBic());
             $recibo->setMandato($factura->getIDCliente()->getMandato());
             $recibo->setFechaMandato($factura->getIDCliente()->getFechaMandato());
             $recibo->setConcepto("Cobro Factura");
             $recibo->setAsiento($asiento);
             $recibo->setIDEstado($formaPago->getEstadoRecibo()->getIDTipo());
             // Si el recibo se crea cobrado, se pone la fecha de vencimiento en la remesa
             if ($formaPago->getEstadoRecibo()->getIDTipo() == '6') {
                 $recibo->setIDRemesa(str_replace("-", "", $fVcto));
             } else {
                 $recibo->setIDRemesa('');
             }
             $recibo->setRemesar(1);
             $recibo->setCContable($formaPago->getCContable());
             $recibo->create();
             unset($recibo);
         }
     }
     unset($factura);
     unset($formaPago);
 }