/** * registro Cierre Caja * @param \Zend\ServiceManager\ServiceLocatorInterface $serviceLocator * @param \Tesoreria\Models\ERequest $request * @param boolean $forzado * @return \Tesoreria\Models\EResponse */ public static function registroCierreCaja($serviceLocator, $request, $forzado = false) { $response = new EResponse(); $params = array(); $params["request"] = $request; $params = json_encode($params); $conexion = $serviceLocator->get(Constants::SCHEMA_1)->getDriver()->getConnection(); $conexion->beginTransaction(); try { self::init($serviceLocator); ExpLog::save($serviceLocator, $request->header->serieEquipo, Constants::LOG_ACTIVIDAD, "", "registro Cierre Caja", $params, "", $request->header->usuario); # 1. Realizo el cierre en SIRIS $newRequest = new ERequestHeader(); $newRequest->secuencia = Constants::SEQ_0; $newRequest->serieEquipo = $request->header->serieEquipo; $newRequest->trxEquipo = "1"; //$request->header->trxEquipo; $newRequest->usuario = $request->header->usuario; $newRequest->password = $request->header->password; $responseCierre = \Siris\Experts\ExpTerminal::closeTerminal($serviceLocator, $newRequest); # 2. Realizo la registracion en tesoreria si es que no hay errores if ($responseCierre->error == null) { $codOperacion = Constants::PA_SIS_CIERRE_CAJA; $estado = Constants::MA_BA_ESTADO_CERRADA; if ($forzado) { $codOperacion = Constants::PA_SIS_FORZAR_CIERRE_CAJA; $estado = Constants::MA_BA_ESTADO_CERRADA_FORZADA; } $maestroTerminal = self::$maestroBaseDao->getOneObject(array('codigo_alternativo' => $request->header->serieEquipo)); $trxEquipo = ExpUsoDatosAdicionales::getNroTrxTerminal($serviceLocator, $maestroTerminal); $objRegistracion = ExpRegistracion::crearRegistracion($serviceLocator, $codOperacion, $request, $trxEquipo); $result = ExpRegistracion::crearDetalle($serviceLocator, $objRegistracion, $request); # 1. Debo cambiar el estado de la terminal según el tipo de cierre que se esta haciendo # 1.1 Al $request que llega le agreo la información necesaria para poder grabar los cambios. # Configuracion de la terminal $valores = new \stdClass(); $idConfTrx = Constants::CONF_DA_NRO_TRX_TERMINAL; $valores->{$idConfTrx} = $trxEquipo; $idConfEstado = Constants::CONF_DA_ESTADO_TERMINAL; $valores->{$idConfEstado} = $estado; $paramDATerminal = ExpConfiguracion::getParamDatosAdicionalesMaestro($serviceLocator, Constants::MA_BA_AGENCIAS_PROPIAS, $valores, $maestroTerminal); $request->param_da = array($paramDATerminal); $responseActualizarMaestro = self::actualizarConfMaestro($serviceLocator, $request, true); if (!is_null($responseActualizarMaestro->error)) { throw new Exception("No se pudo actualizar la configuracion del maestro terminal"); } $conexion->commit(); $ticketCierreSiris = $responseCierre->tickets; $ticketFinal = ExpTicket::getTicketCajaNoCuadrada($serviceLocator, "CIERRE", $objRegistracion, $ticketCierreSiris); $response->param_tickets = $ticketFinal; } else { $response->result = json_encode($responseCierre); $response->error = $responseCierre->error; } return $response; } catch (Exception $e) { $conexion->rollback(); ExpLog::save($serviceLocator, $request->header->serieEquipo, Constants::LOG_ERROR, "", "registro Cierre Caja", $params, $e->getMessage(), $request->header->usuario); $conexion->commit(); $error = new Error(); $error->setMensaje("Error: no se pudo realizar el Cierre de Caja."); $response->error = $error; return $response; } }
/** * Guarda la recaudacion en el modulo de tesoreria * @param \Zend\ServiceManager\ServiceLocatorInterface $serviceLocator * @param \Siris\Models\ERequestHeader $requestHeader * @param string $total * @param string $tipoMovimiento * @return void */ private static function guardarRegistracionTesoreria($serviceLocator, $requestHeader, $total, $tipoMovimiento) { $header = new \Tesoreria\Models\ERequestHeader(); $header->serieEquipo = $requestHeader->serieEquipo; $header->usuario = $requestHeader->usuario; $header->usuarioAutorizador = $requestHeader->usuarioAutorizador; $requestRegistracion = new \Tesoreria\Models\ERequest(); $requestRegistracion->header = $header; $requestRegistracion->monto_registracion = $total; $maestroTerminal = self::$maestroBaseDao->getOneObject(array('codigo_alternativo' => $requestHeader->serieEquipo)); $trxEquipo = ExpUsoDatosAdicionales::getNroTrxTerminal($serviceLocator, $maestroTerminal); $objRegistracion = ExpRegistracion::crearRegistracion($serviceLocator, Constants::PA_SIS_RECAUDACION, $requestRegistracion, $trxEquipo); # Configuracion de recaudaciones varias $valores = new \stdClass(); $idConf = Constants::CONF_DA_RECAUDACIONES_VARIAS_OWNER; $valores->{$idConf} = $maestroTerminal->getId(); $paramDARecaudacionesVarias = ExpConfiguracion::getParamDatosAdicionales($serviceLocator, Constants::MA_BA_RECAUDACIONES_VARIAS, $valores, $tipoMovimiento); $paramDARecaudacionesVarias->setValor($total); # Configuracion de pesos $valores = new \stdClass(); $idConf = Constants::CONF_DA_PESOS_OWNER; $valores->{$idConf} = $maestroTerminal->getId(); $paramDAPesos = ExpConfiguracion::getParamDatosAdicionales($serviceLocator, Constants::MA_BA_PESOS, $valores, $tipoMovimiento); $paramDAPesos->setValor($total); $requestDetalle = new \Tesoreria\Models\ERequest(); $requestDetalle->param_da = array($paramDARecaudacionesVarias, $paramDAPesos); $estadoDetalle = ExpRegistracion::crearDetalle($serviceLocator, $objRegistracion, $requestDetalle); # Configuracion de la terminal $valores = new \stdClass(); $idConf = Constants::CONF_DA_NRO_TRX_TERMINAL; $valores->{$idConf} = $trxEquipo; $paramDATerminal = ExpConfiguracion::getParamDatosAdicionalesMaestro($serviceLocator, Constants::MA_BA_AGENCIAS_PROPIAS, $valores, $maestroTerminal); $requestTesoreria = new \Tesoreria\Models\ERequest(); $requestTesoreria->header = $requestHeader; $requestTesoreria->param_da = array($paramDATerminal); ExpTerminal::actualizarConfMaestro($serviceLocator, $requestTesoreria); }