/**
  * Devuelve el id del arqueo en donde está anotado
  * el cobro del recibo en curso
  * 
  * @return integer El id del arqueo
  */
 public function getIDArqueo()
 {
     $arqueo = new CajaLineas();
     $rows = $arqueo->cargaCondicion("IDArqueo", "Entidad='RecibosClientes' AND IDEntidad='{$this->IDRecibo}'");
     unset($arqueo);
     return $rows[0]['IDArqueo'];
 }
 /**
  * Genera un array con la informacion necesaria para imprimir el documento
  * Recibe un array con los ids de arqueos de caja
  *
  * @param array $idsDocumento Array con los ids de arqueos
  * @return array Array con dos elementos: master es un objeto CajaArqueos y detail es un array de objetos lineas de arqueos
  */
 protected function getDatosDocumento(array $idsDocumento)
 {
     $master = array();
     $detail = array();
     // Recorro el array de los albaranes a imprimir
     foreach ($idsDocumento as $key => $idDocumento) {
         // Instancio la cabecera del albaran
         $master[$key] = new CajaArqueos($idDocumento);
         // LLeno el array con objetos de lineas de arqueo
         $lineas = array();
         $cajaLineas = new CajaLineas();
         $rows = $cajaLineas->cargaCondicion('IDApunte', "IDArqueo='{$idDocumento}'", "IDAgente,IDApunte ASC");
         foreach ($rows as $row) {
             $lineas[] = new CajaLineas($row['IDApunte']);
         }
         $detail[$key] = $lineas;
     }
     return array('master' => $master, 'detail' => $detail);
 }
 /**
  * Recibe un objeto y realiza un apunte en caja con los
  * valores del mismo. Si la caja no estuviera abierta, la abre.
  * 
  * El apunte de caja se realiza en la sucursal y tpv en curso
  *
  * Los objetos posibles son:
  *
  *  Contratos
  *  FemitidasCab
  *  FrecibidasCab
  *  RecibosClientes
  *  RecibosProveedores
  *
  * La forma de pago que se pondrá en el apunte de caja es la indicada en el
  * parámetro $idFormaPago, y si no se indica, será la que tenga asociada
  * el objeto.
  *
  * @param object $objeto Contratos, FemitidasCab, FrecibidasCab, RecibosClientes, RecibosProveedores
  * @param integer $idFormaPago El id de la forma de pago (opcional)
  * @return boolean TRUE si se pudo crear, FALSE si no.
  */
 public function anotaEnCaja($objeto, $idFormaPago = '')
 {
     $ok = false;
     if ($_SESSION['tpv'] == '') {
         $this->_errores[] = "No se ha establecido el TPV";
         return $ok;
     }
     $entidad = get_class($objeto);
     //$idSucursal = $objeto->getIDSucursal()->getIDSucursal();
     if ($idFormaPago == '') {
         $idFormaPago = $objeto->getIDFP()->getIDFP();
     }
     switch ($entidad) {
         case 'Contratos':
             $concepto = "Pago Contrato " . $objeto->getIDArticulo()->getIDVenta() . " " . $objeto->getNumeroDocumento();
             $origen = 7;
             $importe = -1 * $objeto->getImportePago();
             $idEntidad = $objeto->getPrimaryKeyValue();
             break;
         case 'FemitidasCab':
             $concepto = "Cobro N/Fra. {$objeto->getNumeroFactura()} de {$objeto->getIDCLiente()}";
             $origen = 2;
             $importe = $objeto->getTotal();
             $idEntidad = $objeto->getPrimaryKeyValue();
             break;
         case 'RecibosClientes':
             $concepto = "Cobro N/Fra. {$objeto->getIDFactura()->getNumeroFactura()} de {$objeto->getIDCliente()}";
             $origen = 3;
             $importe = $objeto->getImporte();
             $idEntidad = $objeto->getPrimaryKeyValue();
             break;
         case 'FrecibidasCab':
             $concepto = "Pago S/Fra. {$objeto->getNumeroFactura()} de {$objeto->getIDProveedor()}";
             $origen = 4;
             $importe = -1 * $objeto->getTotal();
             $idEntidad = $objeto->getPrimaryKeyValue();
             break;
         case 'RecibosProveedores':
             $concepto = "Pago S/Fra. {$objeto->getIDFactura()->getNumeroFactura()} de {$objeto->getIDProveedor()}";
             $origen = 5;
             $importe = -1 * $objeto->getImporte();
             $idEntidad = $objeto->getPrimaryKeyValue();
             break;
     }
     // Comprobar que la caja esté abierta, si no, abrirla
     $this->setIDSucursal($_SESSION['suc']);
     $this->setIDTpv($_SESSION['tpv']);
     $this->setDia(date('Y-m-d'));
     $idArqueo = $this->estaAbierta();
     if (!$idArqueo) {
         $idArqueo = $this->apertura();
     }
     if ($idArqueo) {
         $apunte = new CajaLineas();
         $apunte->setIDArqueo($idArqueo);
         $apunte->setFecha(date('Y-m-d H:i:s'));
         $apunte->setConcepto($concepto);
         $apunte->setIDFP($idFormaPago);
         $apunte->setOrigen($origen);
         $apunte->setEntidad($entidad);
         $apunte->setIDEntidad($idEntidad);
         $apunte->setImporte($importe);
         $apunte->setIDAgente($_SESSION['usuarioPortal']['Id']);
         $ok = $apunte->create();
         $this->_errores = $apunte->getErrores();
     } else {
         $this->_errores[] = "No se ha realizado el apunte de caja.";
     }
     return $ok;
 }