/** * Realiza un traspaso de importes entre la caja actual y la de destino * * Las cajas pueden ser de distintas sucursales * * 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 * */ public function TraspasarAction() { if ($this->validaTraspaso()) { $arqueoOrigen = new CajaArqueos($this->request['CajaArqueos']['IDArqueo']); // Comprobar que la caja destino esté abierta, si no, abrirla $arqueoDestino = new CajaArqueos(); $arqueoDestino->setIDSucursal($this->request['IDSucursalDestino']); $arqueoDestino->setIDTpv($this->request['IDTpvDestino']); $arqueoDestino->setDia(date('Y-m-d')); $idArqueoDestino = $arqueoDestino->estaAbierta(); if (!$idArqueoDestino) { $idArqueoDestino = $arqueoDestino->apertura(); } foreach ($this->request['traspaso'] as $idFormaPago => $importes) { if ($importes['importeDestino'] > 0) { // Sacar de la caja origen $apunteSalida = new CajaLineas(); $apunteSalida->setIDArqueo($this->request['CajaArqueos']['IDArqueo']); $apunteSalida->setFecha(date('Y-m-d H:i:s')); $apunteSalida->setConcepto("Salida por Traspaso a " . $arqueoDestino->getIDSucursal() . " " . $arqueoDestino->getIDTpv()); $apunteSalida->setIDFP($idFormaPago); $apunteSalida->setOrigen('6'); // Traspasos $apunteSalida->setImporte(-1 * $importes['importeDestino']); $apunteSalida->setIDAgente($_SESSION['usuarioPortal']['Id']); $apunteSalida->create(); $this->_errores = $apunteSalida->getErrores(); // Meter en la caja destino $apunteEntrada = new CajaLineas(); $apunteEntrada->setIDArqueo($idArqueoDestino); $apunteEntrada->setFecha(date('Y-m-d H:i:s')); $apunteEntrada->setConcepto("Entrada por Traspaso de " . $arqueoOrigen->getIDSucursal() . " " . $arqueoOrigen->getIDTpv()); $apunteEntrada->setIDFP($idFormaPago); $apunteEntrada->setOrigen('6'); // Traspasos $apunteEntrada->setImporte($importes['importeDestino']); $apunteEntrada->setIDAgente($_SESSION['usuarioPortal']['Id']); $apunteEntrada->create(); $this->_errores = $apunteEntrada->getErrores(); } } } else { $this->values['errores'] = $this->errorTraspaso; } unset($arqueoDestino); unset($arqueoOrigen); unset($apunteEntrada); unset($apunteSalida); $datos = new CajaArqueos($this->request[$this->entity]['IDArqueo']); $this->values['datos'] = $datos; unset($datos); return array('template' => $this->entity . "/edit.html.twig", 'values' => $this->values); }