/** * *Registra un nuevo ingreso * * @param fecha_ingreso string Fecha del ingreso * @param id_empresa int Id de la empresa a la que pertenece este ingreso * @param monto float Monto del ingreso en caso de que no este contemplado por el concepto de ingreso o que sea diferente * @param id_sucursal int Id de la caja a la que pertenece este ingreso * @param id_concepto_ingreso int Id del concepto al que hace referencia el ingreso * @param id_caja int Id de la caja en la que se registra el ingreso * @param folio string Folio de la factura del ingreso * @param nota string Nota del ingreso * @param descripcion string Descripcion del ingreso en caso de no este contemplado en la lista de conceptos de ingreso * @return id_ingreso int Id autogenerado por la insercion del ingreso **/ public static function NuevoIngreso($fecha_ingreso, $id_empresa, $billetes = null, $descripcion = null, $folio = null, $id_caja = null, $id_concepto_ingreso = null, $id_sucursal = null, $monto = null, $nota = null) { Logger::log("Creando nuevo ingreso"); //Se obtiene al usuario de la sesion $id_usuario = SesionController::getCurrentUser(); $id_usuario = $id_usuario->getIdUsuario(); if (is_null($id_usuario)) { Logger::error("No se pudo obtener el usuario de la sesion, ya inicio sesion?"); throw new Exception("No se pudo obtener el usuario de la sesion, ya inicio sesion?"); } //Se validan los parametros obtenidos $validar = self::validarParametrosIngreso(null, $id_empresa, $id_concepto_ingreso, $fecha_ingreso, $id_sucursal, $id_caja, $nota, $descripcion, $folio, $monto); if (is_string($validar)) { Logger::error($validar); throw new Exception($validar); } //Verifica el monto del ingreso, si no se ha recibido un monto, se busca en el concepto. //Si el concepto no se recibe o no tiene monto se manda una excepcion if (is_null($monto)) { Logger::log("No se recibio monto, se procede a buscar en el concepto de ingreso"); if (is_null($id_concepto_ingreso)) { Logger::error("No se recibio un concepto de ingreso"); throw new Exception("No se recibio un concepto de ingreso ni un monto"); } $concepto_ingreso = ConceptoIngresoDAO::getByPK($id_concepto_ingreso); $monto = $concepto_ingreso->getMonto(); if (is_null($monto)) { Logger::error("El concepto de ingreso recibido no cuenta con un monto"); throw new Exception("El concepto de ingreso recibido no cuenta con un monto ni se recibio un monto"); } } //Si no se recibe sucursal, se obtiene la acutal, //si no se logro obtener se registra el ingreso sin sucursal if (!$id_sucursal) { $id_sucursal = self::getSucursal(); } //Si no se recibe caja, se obtiene la actual, //si no se obtiene la actual, se registra el ingreso sin caja if (!$id_caja) { $id_caja = self::getCaja(); } //Si se obtuvo una caja, se le agrega a su saldo el monto del ingreso if (!is_null($id_caja)) { try { CajasController::modificarCaja($id_caja, 1, $billetes, $monto); } catch (Exception $e) { throw $e; } } //Se inicializa el registro de ingreso $ingreso = new Ingreso(); $ingreso->setCancelado(0); $ingreso->setDescripcion($descripcion); // fecha_ingreso might be in the format : 2012-10-21T00:00:00 // if this is the case then act acordingly if (is_int($fecha_ingreso)) { $ingreso->setFechaDelIngreso($fecha_ingreso); } else { $ingreso->setFechaDelIngreso(strtotime($fecha_ingreso)); } $ingreso->setFolio($folio); $ingreso->setIdCaja($id_caja); $ingreso->setIdConceptoIngreso($id_concepto_ingreso); $ingreso->setIdEmpresa($id_empresa); $ingreso->setIdSucursal($id_sucursal); $ingreso->setIdUsuario($id_usuario); $ingreso->setMonto($monto); $ingreso->setNota($nota); $ingreso->setFechaDeRegistro(time()); DAO::transBegin(); try { IngresoDAO::save($ingreso); } catch (Exception $e) { DAO::transRollback(); Logger::error("Error al guardar el nuevo ingreso: " . $e); throw new Exception("Error al guardar el nuevo ingreso"); } DAO::transEnd(); Logger::log("Ingreso creado exitosamente!"); return array("id_ingreso" => $ingreso->getIdIngreso()); }