/** * 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); }
/** * 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; }