示例#1
0
 /**
  * Realiza el apunte de caja si procede según la forma de pago
  */
 public function anotaEnCaja()
 {
     if ($this->getIDFP()->getAnotarEnCaja()->getIDTipo() == '1') {
         $arqueo = new CajaArqueos();
         $arqueo->anotaEnCaja($this);
     }
 }
 /**
  * Cambia de estado al conjunto de recibos recibidos
  *
  * Actualiza su estado, la fecha de vencimiento y la cuenta contable
  * Además genera apunte de caja si procede
  *
  * @return array
  */
 public function CobrarAction()
 {
     if ($this->values['permisos']['permisosModulo']['UP']) {
         $formaPago = new FormasPago($this->request['idFP']);
         $anotarEnCaja = $formaPago->getAnotarEnCaja()->getIDTipo() == '1';
         $estadoRecibo = $formaPago->getEstadoRecibo()->getIDTipo();
         $cContable = $formaPago->getCContable();
         $caja = new CajaArqueos();
         foreach ($this->request['RecibosClientes'] as $recibo) {
             $objeto = new RecibosClientes($recibo['IDRecibo']);
             $objeto->setVencimiento($this->request['fechaCobro']);
             $objeto->setIDEstado($estadoRecibo);
             $objeto->setCContable($cContable);
             if ($objeto->save() and $anotarEnCaja) {
                 $caja->anotaEnCaja($objeto, $this->request['idFP']);
             }
             if (count($objeto->getErrores) > 0) {
                 print_r($objeto->getErrores());
             }
         }
         unset($objeto);
         unset($formaPago);
         unset($caja);
         return $this->listAction();
     } else {
         return array('template' => '_global/forbiden.html.twig');
     }
 }
 /**
  * Realiza las siguientes validaciones antes de traspasar:
  *
  *   - Se haya indicado tpv destino y que sea distinto al de origen
  *   - Que los importes a traspasar no superen la cantidad origen
  *   - Que el arqueo del tpv origen no esté cerrado
  *   - Que el arqueo del tpv destino para la fecha actual no esté cerrado
  *
  *
  * @return boolean
  */
 private function validaTraspaso()
 {
     if ($this->request['IDTpvDestino'] == '') {
         $this->errorTraspaso[] = "Debe indicar un TPV destino";
     }
     if ($this->request['IDTpvDestino'] == $this->request['IDTpvOrigen']) {
         $this->errorTraspaso[] = "El TPV destino no puede ser igual al de origen";
     }
     foreach ($this->request['traspaso'] as $value) {
         if ($value['importeDestino'] > $value['importeOrigen']) {
             $this->errorTraspaso[] = "El importe a traspasar supera el importe origen";
         }
     }
     // Comprobar que la caja origen no esté cerrada
     $arqueoOrigen = new CajaArqueos($this->request['IDArqueo']);
     if ($arqueoOrigen->estaCerrada()) {
         $this->errorTraspaso[] = "La caja de origen está cerrada. No se puede traspasar";
     }
     // Comprobar que la caja destino no esté cerrada
     $arqueoDestino = new CajaArqueos();
     $arqueoDestino->setIDSucursal($this->request['IDSucursalDestino']);
     $arqueoDestino->setIDTpv($this->request['IDTpvDestino']);
     $arqueoDestino->setDia(date('Y-m-d'));
     if ($arqueoDestino->estaCerrada()) {
         $this->errorTraspaso[] = "La caja de destino está cerrada. No se puede traspasar";
     }
     return count($this->errorTraspaso) == 0;
 }
示例#4
0
 /**
  * Abre la caja en el día actual con los importes
  * de la caja que esté cerrada inmediatamente antes.
  *
  * Si la caja inmediatamente anterior no estuviera cerrada, la cierra
  *
  * Se crean tantos apuntes de apertura como formas de pago
  * haya en el arqueo de la caja cerrada
  *
  * @return integer El id del arqueo creado
  */
 public function apertura()
 {
     // Localizar el arqueo anterior.
     $filtro = "IDSucursal='{$this->IDSucursal}' and IDTpv='{$this->IDTpv}'";
     $arqueo = new CajaArqueos();
     $rows = $arqueo->cargaCondicion("IDArqueo,Dia,CajaCerrada", $filtro, "Dia DESC");
     $arqueoAnterior = $rows[0];
     if (count($rows)) {
         $arqueo = new CajaArqueos($arqueoAnterior['IDArqueo']);
         // Si el arqueo anterior está abierto, lo cierro
         if (!$arqueoAnterior['CajaCerrada']) {
             $arqueo->cierra();
         }
         // Agrupar los importes por forma de pago
         $importes = $arqueo->getResumen();
     } else {
         $importes = array();
     }
     unset($arqueo);
     // Abrir la caja
     $idArqueo = parent::create();
     if ($idArqueo) {
         // Crear los apuntes de apertura
         foreach ($importes as $key => $importe) {
             $dia = new Fecha($rows[0]['Dia']);
             $apunte = new CajaLineas();
             $apunte->setIDArqueo($idArqueo);
             $apunte->setFecha(date('Y-m-d H:i:s'));
             $apunte->setConcepto('APERTURA CON EL CIERRE DEL DIA ' . $dia->getddmmaaaa());
             $apunte->setIDFP($importe['IDFP']);
             $apunte->setOrigen(0);
             // Apertura
             $apunte->setEntidad('CajaArqueos');
             $apunte->setIDEntidad($arqueoAnterior['IDArqueo']);
             $apunte->setImporte($importe['Importe']);
             $apunte->setIDAgente($_SESSION['usuarioPortal']['Id']);
             $apunte->create();
             $this->_errores = $apunte->getErrores();
             unset($apunte);
             unset($dia);
         }
     }
     return $idArqueo;
 }