public static function init($row, $id = null) { $objUsoDAItem = new UsoDAItem(); try { if (is_null($id)) { $objUsoDAItem->setId($row->uso_dai_id); } else { $objUsoDAItem->setId($row->{$id}); throw new \Exception(); } $objUsoDAItem->setValor($row->uso_dai_valor); $objUsoDAItem->isFromDb(true); } catch (\Exception $e) { return $objUsoDAItem; } $item = ItemDao::init($row, "it_item"); $objUsoDAItem->setItem($item); $conf = ConfDatosAdicionalesDao::init($row, "conf_da_configuracion"); $objUsoDAItem->setConfDatosAdicionales($conf); return $objUsoDAItem; }
/** * registro Conciliacion Caja * @param \Zend\ServiceManager\ServiceLocatorInterface $serviceLocator * @param \Tesoreria\Models\ERequest $request * @return \Tesoreria\Models\EResponse */ public static function registroConciliacionCaja($serviceLocator, $request) { $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 Conciliacion Caja", $params, "", $request->header->usuario); $objRegistracion = ExpRegistracion::crearRegistracion($serviceLocator, Constants::PA_SIS_RECAUDACION_EXTERNA, $request); $result = ExpRegistracion::crearDetalle($serviceLocator, $objRegistracion, $request); /// --------------------------------- CARGO EL ITEM ACTUALIZADO PARA HACER VISIBLE LOS CAMBIOS -------------------------------- // // Busco un maestro especifico, en este caso la terminal que esta interactuando $maestroTerminal = self::$maestroBaseDao->getOneObject(array('codigo_alternativo' => $request->header->serieEquipo)); // ----- Realizo la busqueda del item de pesos para la terminal en cuestion ------------- /// $condicion = 'owner = ' . $maestroTerminal->getId(); $resultSetItemPesos = ExpStoresProcedures::findItems($serviceLocator, Constants::MA_BA_PESOS, $condicion); if (count($resultSetItemPesos) == 0) { throw new Exception("Error: el item de pesos de la terminal no ha sido encontrado"); } $itemPesos = self::$itemDao->getOneObject(array('it_id' => $resultSetItemPesos[0]->it_id)); /// -----------------------------------------------------------------------------------------------------------------------------------// // ----- Construyo el parametro de retorno de los items ------------- /// // Items de Pesos $paramItem1 = new ParamItems(); $paramItem1->setNombre('Pesos'); $paramItem1->setItems(array($itemPesos)); // Seteo la variable para retornar $response->param_items = array($paramItem1); /// ------------------------------ CONFIGURACION DATOS PARAM_INFORME -------------------------------/// $paramDAInforme = ExpStoresProcedures::getCajaDetalle($serviceLocator, $maestroTerminal->getId(), date('Y-m-d'), date('Y-m-d')); $resultCierres = from('$detalle')->in($paramDAInforme)->where('$detalle => $detalle->id_operacion == 8 && $detalle->entidad == "' . $maestroTerminal->nombre . '"')->orderBy('$detalle => $detalle->fecha_registracion')->select('$detalle'); $ultimoCierre = $resultCierres[count($resultCierres) - 1]->fecha_registracion; $response->param_informe->info_detalle_registraciones = from('$detalle')->in($paramDAInforme)->where('$detalle => $detalle->id_operacion != 8 && $detalle->fecha_registracion > "' . $ultimoCierre . '" && $detalle->entidad == "' . $maestroTerminal->nombre . '"')->select('$detalle'); /// ------------------------------ CONFIGURACION DATOS PARAM_INFORME_RECAUDACION -------------------------------/// # 1. Busco y Construyo datos de ingresos detallados en SIRIS $newRequest = new \stdClass(); $newRequest->secuencia = Constants::SEQ_0; $newRequest->serieEquipo = $request->header->serieEquipo; $newRequest->trxEquipo = "1"; $newRequest->usuario = $request->header->usuario; $newRequest->password = $request->header->password; $responseResport = \Siris\Experts\ExpReporte::analyticalReport($serviceLocator, $newRequest); $response->param_informe->informe_recaudaciones = $responseResport->informe; /// ------------------------------ CONFIGURACION DATOS PARAM_COMPLEMENTARIOS -------------------------------/// // Saldo de Pesos inicial para la terminal $paramComp = new ParamComplementarios(); $paramComp->setNombre('Saldo_Inicial'); # 1. Recalculo el saldo incial a partir de las registraciones //$saldoInicial= floatval($itemPesos->cantidad); # 1.1 obtengo el ultimo cierre para determinal que operaciones se han realizado posterior a este $resultCierres = from('$detalle')->in($paramDAInforme)->where('$detalle => $detalle->id_operacion == 8 && $detalle->entidad == "' . $maestroTerminal->nombre . '"')->orderBy('$detalle => $detalle->fecha_registracion')->select('$detalle'); $ultimoCierre = $resultCierres[count($resultCierres) - 1]->fecha_registracion; # 1.2 Obtengo el movimiento de apertura $movimientoSaldoApertura = from('$detalle')->in($paramDAInforme)->where('$detalle => $detalle->id_operacion != 8 && $detalle->fecha_registracion > "' . $ultimoCierre . '" && $detalle->entidad == "' . $maestroTerminal->nombre . '" && $detalle->concepto == "Saldo Apertura"')->select('new { "Valor" => $detalle->valor }'); $paramComp->setValor(floatval($movimientoSaldoApertura[0]->Valor)); # 2. Seteo la variable para retornar $response->param_complementarios = array($paramComp); /// ------------------------------ CONFIGURACION DATOS PARAM_DA -------------------------------/// # 1. Configuracion de pesos tipo ENTRDA/SALIDA de la terminal $valores = new \stdClass(); $idConf = Constants::CONF_DA_PESOS_OWNER; $valores->{$idConf} = $maestroTerminal->getId(); $paramDAPesosTerminal = ExpConfiguracion::getParamDatosAdicionales($serviceLocator, Constants::MA_BA_PESOS, $valores, Constants::MO_ENTRADA_SALIDA); # 2. Configuracion del SOBRANTE DE CAJA $valores = new \stdClass(); $idConf = Constants::CONF_DA_SOBRANTE_OWNER; $valores->{$idConf} = $maestroTerminal->getId(); $paramDASobrante = ExpConfiguracion::getParamDatosAdicionales($serviceLocator, Constants::MA_BA_SOBRANTE, $valores, Constants::MO_ENTRADA_CORTO); # 3. Configuracion de saldo de Cierre tipo ENTRDA de la terminal $valores = new \stdClass(); $idConf = Constants::CONF_DA_SALDO_CIERRE_OWNER; $valores->{$idConf} = $maestroTerminal->getId(); $paramDASaldoCierre = ExpConfiguracion::getParamDatosAdicionales($serviceLocator, Constants::MA_BA_SALDO_CIERRE, $valores, Constants::MO_ENTRADA_CORTO); # 4. Configuracion del FALTANTE DE CAJA $valores = new \stdClass(); $idConf = Constants::CONF_DA_FALTANTE_OWNER; $valores->{$idConf} = $maestroTerminal->getId(); $paramDAFaltante = ExpConfiguracion::getParamDatosAdicionales($serviceLocator, Constants::MA_BA_FALTANTE, $valores, Constants::MO_ENTRADA_CORTO); # 5. Finalmente cargo la variable PARAM_DA $allParamDA = array($paramDAPesosTerminal, $paramDAFaltante, $paramDASobrante, $paramDASaldoCierre); $response->param_da = $allParamDA; $response->result = $maestroTerminal->getId(); $conexion->commit(); return $response; } catch (Exception $e) { $conexion->rollback(); ExpLog::save($serviceLocator, $request->header->serieEquipo, Constants::LOG_ERROR, "", "registro Apertura Caja", $params, $e->getMessage(), $request->header->usuario); $error = new Error(); $error->setMensaje("Error: no se pudo realizar el Reporte de Deposito."); $response->error = $error; return $response; } }
/** * Crear Detalle * @param \Zend\ServiceManager\ServiceLocatorInterface $serviceLocator * @param \Tesoreria\Models\Registracion $objRegistracion * @param \Tesoreria\Models\ERequest $request * @return boolean * @throws Exception */ public static function crearDetalle($serviceLocator, $objRegistracion, $request) { self::init($serviceLocator); if (array_key_exists("item", $request->param_da)) { $param_da = $request->param_da->item; } else { $param_da = $request->param_da; } $allDetallesRegistracion = array(); foreach ($param_da as $key_pa => $param) { $objMaestro = new MaestroBase(); $objMaestro->setId($param->maestro_base->id); if (array_key_exists("item", $param->lista_configuraciones)) { $listaConfiguracion = $param->lista_configuraciones->item; } else { $listaConfiguracion = $param->lista_configuraciones; } if (!is_array($listaConfiguracion)) { $listaConfiguracion = array($listaConfiguracion); } $tipo = $param->tipo; $valorParam = $param->valor; $condicion = ""; if (!is_null($valorParam)) { foreach ($listaConfiguracion as $key => $listConf) { $valorConf = $listConf->valor; $nombre = $listConf->configuracion->nombre; $tipo_dato = $listConf->configuracion->tipo_dato; if ($tipo_dato != Constants::CONF_DA_SERIALIZACION) { continue; } if ($key > 0) { $condicion .= " AND "; } if (is_string($valorConf)) { $condicion .= " " . $nombre . "= '" . $valorConf . "'"; } else { $condicion .= " " . $nombre . "=" . $valorConf; } } $resultSetItem = ExpStoresProcedures::findItems($serviceLocator, $param->maestro_base->id, $condicion); if ($tipo == Constants::MO_SALIDA_CORTO && count($resultSetItem) == 0) { throw new Exception("Error: no existe el item para hacer un movimiento de salida"); } else { if ($tipo == Constants::MO_ENTRADA_CORTO && count($resultSetItem) == 0) { $item = new Item(); $item->setMaestro($objMaestro); $item->setCantidad($valorParam); $objItem = self::$itemDao->save($item); if (!$objItem) { throw new Exception("Error: no se pudo crear el item para hacer el movimiento de entrada"); } #creacion de los usos de datos adicionales foreach ($listaConfiguracion as $listConf) { $valorConf = $listConf->valor; $confDA = new ConfDatosAdicionales(); $confDA->setId($listConf->configuracion->id); $usoDAItem = new UsoDAItem(); $usoDAItem->setItem($objItem); $usoDAItem->setValor($valorConf); $usoDAItem->setConfDatosAdicionales($confDA); $objUsoDAItem = self::$usoDAItemDao->save($usoDAItem); if (!$objUsoDAItem) { throw new Exception("Error: no se pudo crear el item para hacer el movimiento de entrada"); } } } else { $objItem = self::$itemDao->getOneObject(array('it_id' => $resultSetItem[0]->it_id)); if ($valorParam > 0) { #actualiza cantidad en item $cantidad = $objItem->getCantidad(); $nuevaCantidad = 0; if ($tipo == Constants::MO_SALIDA_CORTO) { $nuevaCantidad = $cantidad - $valorParam; } else { if ($tipo == Constants::MO_ENTRADA_CORTO) { $nuevaCantidad = $cantidad + $valorParam; } else { throw new Exception("Error: el item no posee el tipo de movimiento"); } } $objItem->setCantidad($nuevaCantidad); if (!self::$itemDao->save($objItem)) { throw new Exception("Error: el item no pudo ser actualizado - " . $objItem->id); } } } } $tipoMovimiento = Constants::MO_ENTRADA; if ($tipo == Constants::MO_SALIDA_CORTO) { $tipoMovimiento = Constants::MO_SALIDA; } $detalleRegistracion = new DetalleRegistracion(); $detalleRegistracion->setRegistracion($objRegistracion); $detalleRegistracion->setMaestro($objMaestro); $detalleRegistracion->setItem($objItem); $detalleRegistracion->setTipoMovimiento($tipoMovimiento); $detalleRegistracion->setValor($valorParam); $allDetallesRegistracion[] = $detalleRegistracion; $objDetalleRegistracion = self::$detalleRegistracionDao->save($detalleRegistracion); if (!$objDetalleRegistracion) { throw new Exception("Error: no se pudo crear el detalle de la registracion"); } } } # HASH DE LA REGISTRACION $generator = new ExpStringGenerator(); $tokenLength = 20; $hash = $generator->generate($tokenLength); $objRegistracion->setHashControl($hash); $objRegistracionUpdated = self::$registracionDao->save($objRegistracion); if (!$objRegistracionUpdated) { throw new Exception("Error: no se pudo actualizar el objeto registracion"); } return true; }