public function testBootstrap() { $r = SesionController::Iniciar(123, 1, true); $this->assertEquals($r["login_succesful"], true); $r = SesionController::getCurrentUser(); $this->assertEquals($r->getIdUsuario(), 1); }
public function testUsuarioActual() { POSController::ClientesVistasConfiguracion(true); $configuraciones = ConfiguracionDAO::search($this->configuracion); $configuracion = $configuraciones[0]; $sesion = SesionController::Actual(); $this->assertEquals($sesion['id_usuario'], $configuracion->getIdUsuario()); }
protected function GenerateResponse() { try { $this->response = SesionController::Actual(); } catch (Exception $e) { //Logger::error($e); throw new ApiException($this->error_dispatcher->invalidDatabaseOperation($e->getMessage())); } }
protected function setUp() { $r = SesionController::Iniciar(123, 1, true); if ($r["login_succesful"] == false) { global $POS_CONFIG; $POS_CONFIG["INSTANCE_CONN"]->Execute("INSERT INTO `usuario` (`id_usuario`, `id_direccion`, `id_direccion_alterna`, `id_sucursal`, `id_rol`, `id_clasificacion_cliente`, `id_clasificacion_proveedor`, `id_moneda`, `fecha_asignacion_rol`, `nombre`, `rfc`, `curp`, `comision_ventas`, `telefono_personal1`, `telefono_personal2`, `fecha_alta`, `fecha_baja`, `activo`, `limite_credito`, `descuento`, `password`, `last_login`, `consignatario`, `salario`, `correo_electronico`, `pagina_web`, `saldo_del_ejercicio`, `ventas_a_credito`, `representante_legal`, `facturar_a_terceros`, `dia_de_pago`, `mensajeria`, `intereses_moratorios`, `denominacion_comercial`, `dias_de_credito`, `cuenta_de_mensajeria`, `dia_de_revision`, `codigo_usuario`, `dias_de_embarque`, `tiempo_entrega`, `cuenta_bancaria`, `id_tarifa_compra`, `tarifa_compra_obtenida`, `id_tarifa_venta`, `tarifa_venta_obtenida`) VALUES\n\t\t\t\t(1, NULL, NULL, NULL, 0, NULL, NULL, NULL, '2011-10-24 18:28:24', 'Administrador', NULL, NULL, NULL, NULL, NULL, '2011-10-24 18:28:34', NULL, 1, 0, NULL, '202cb962ac59075b964b07152d234b70', NULL, 0, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '', NULL, NULL, NULL, 0, 'rol', 0, 'rol');"); $r = SesionController::Iniciar(123, 1, true); } }
public static function setUpBeforeClass() { SesionController::Iniciar(123, 1, true); self::$categoria_peso = new CategoriaUnidadMedida(array('descripcion' => 'Peso', 'activa' => true)); CategoriaUnidadMedidaDAOBase::save(self::$categoria_peso); CategoriaUnidadMedidaDAOBase::save(new CategoriaUnidadMedida(array('descripcion' => 'Tiempo', 'activa' => false))); CategoriaUnidadMedidaDAOBase::save(new CategoriaUnidadMedida(array('descripcion' => 'Distancia', 'activa' => true))); CategoriaUnidadMedidaDAOBase::save(new CategoriaUnidadMedida(array('descripcion' => 'Omo', 'activa' => false))); }
protected function _renderTopMenu() { $s = SesionController::Actual(); $u = UsuarioDAO::getByPK($s["id_usuario"]); ?> <a class="l" href="./helper.php">Ayuda</a> <a class="l">(<?php echo $u->getNombre(); ?> )</a> <a class="l" href="./../?cs=1"> Salir</a> <?php }
public function testDeleteAuthTokenOnLogout() { //insert a new user $sql = "Delete from `usuario` where `codigo_usuario` = 'foo';"; global $POS_CONFIG; $POS_CONFIG["INSTANCE_CONN"]->Execute($sql); $r = PersonalYagentesController::NuevoUsuario("foo", "1", "name", "password444222"); $r = SesionController::Iniciar("password444222", "foo"); //this token should be non existing when i log out $auth_token = $r["auth_token"]; $vos = SesionDAO::search(new Sesion(array("auth_token" => $auth_token))); $r = SesionController::Cerrar($auth_token); $vos = SesionDAO::search(new Sesion(array("auth_token" => $auth_token))); $this->assertEquals(sizeof($vos), 0); }
function __construct() { //vamos a ver si me enviaron un login if (isset($_POST["do_login"])) { //test credentials $user = SesionController::testLogin($_POST["user"], $_POST["password"]); } //vamos a ver si me enviaron un logout if (isset($_REQUEST["close_session"])) { SesionController::logout(); die(header("Location: ../")); } $this->js_urls = ""; $this->css_urls = ""; $this->header = ""; $this->menu = ""; $this->content = ""; $this->footer = ""; $this->page_title = "POS ERP"; }
protected function CheckAuthorization() { //needs to be logged in if (!SesionController::isLoggedIn()) { throw new ApiException($this->error_dispatcher->invalidAuthToken()); } return true; /* Logger::warn("Aqui hay un notice de php suprimido ApiHandler.php->CheckAuthorization()"); $token = null; if( @isset($_GET["auth_token"] ) ){ $token = $_GET["auth_token"]; } if( @isset($_POST["auth_token"] ) ){ $token = $_POST["auth_token"]; } if(is_null($token)){ Logger::log("No se ha enviado un auth_token"); throw new ApiException( $this->error_dispatcher->invalidAuthToken() ); } //buscar el token $r = SesionDAO::search( new Sesion( array( "auth_token" => $token ) ) ); if(sizeof($r) == 1) return true; Logger::log("El auth_token no se encontro en la BD"); throw new ApiException( $this->error_dispatcher->invalidAuthToken() ); */ }
/** * *Dar por terminada una orden, cuando el cliente satisface el ultimo pago * * @param id_orden int Id de la orden a terminar **/ public static function TerminarOrden($id_orden, $id_venta = null) { Logger::log("Terminando orden " . $id_orden . " "); if (!is_null($id_venta)) { Logger::log("Asignando orden a id_venta=" . $id_venta); //que la venta exista $v = VentaDAO::getByPK($id_venta); if (is_null($v)) { throw new InvalidDataException("La venta a la que se quiere asignar no existe."); } } //ver que exista la orden de servicio $ods = OrdenDeServicioDAO::getByPK($id_orden); if (is_null($ods)) { throw new InvalidDataException("La orden de servicio que desea terminar no existe"); } if (!$ods->getActiva()) { throw new BusinessLogicException("La orden que quieres terminar ya no esta terminada."); } DAO::transBegin(); try { $ods->setActiva(0); OrdenDeServicioDAO::save($ods); } catch (Exception $e) { throw InvalidDatabaseOperationException($e); } if (!is_null($id_venta)) { $vo = new VentaOrden(); $vo->setIdVenta($id_venta); $vo->setIdOrdenDeServicio($id_orden); $vo->setPrecio($ods->getPrecio()); $vo->setDescuento(0); $vo->setImpuesto(0); $vo->setRetencion(0); //Actualizar totales $ventaVo = VentaDAO::getByPK($id_venta); try { VentaOrdenDAO::save($vo); } catch (Exception $e) { throw InvalidDatabaseOperationException($e); } } else { //crearle una nueva venta $venta = new Venta(); $s = SesionController::Actual(); Logger::error("There is plenty of hard-coded stuff here !"); $venta->setIdCompradorVenta($ods->getIdUsuarioVenta()); $venta->setTipoDeVenta("contado"); $venta->setFecha(time()); $venta->setSubtotal(0); $venta->setEsCotizacion(0); $venta->setImpuesto(0); $venta->setTotal(0); $venta->setIdSucursal($s["id_sucursal"]); $venta->setIdUsuario($s["id_usuario"]); $venta->setSaldo(0); //si hay adelanto se resta al saldo de la venta el adelanto, esta resta se hace al insertar el abono_venta $venta->setCancelada(false); $venta->setRetencion(0); //vamos a ver si este dude tiene suficient credito para esto try { Logger::log("Insertando la venta ...."); VentaDAO::save($venta); } catch (Exception $e) { DAO::transRollback(); Logger::error($e->getMessage()); throw new InvalidDatabaseOperationException("No se pudo crear la nueva orden de servicio"); } $venta_orden = new VentaOrden(); $venta_orden->setIdVenta($venta->getIdVenta()); $venta_orden->setIdOrdenDeServicio($ods->getIdOrdenDeServicio()); $venta_orden->setPrecio(0); $venta_orden->setDescuento(0); $venta_orden->setImpuesto(0); $venta_orden->setRetencion(0); try { Logger::log("Insertando la orden de venta...."); VentaOrdenDAO::save($venta_orden); } catch (Exception $e) { DAO::transRollback(); Logger::error($e->getMessage()); throw new InvalidDatabaseOperationException("No se pudo crear la nueva orden de servicio"); } $id_venta = $venta->getIdVenta(); } DAO::transEnd(); Logger::log("La orden de servicio se ha terminado exitosamente"); return array("id_venta" => $id_venta); }
$extern_url = $_GET["who"]; $p = new PosComponentPage(); $p->addComponent(new Titlecomponent($_GET["extern_login"] . " desea utilizar tu cuenta de Caffeina POS. ", 2)); if (!SesionController::isLoggedIn()) { $login = new LoginComponent(); $login->setLoginApiCall("api/sesion/iniciar/"); $login->setExternLoginUrl($_GET["extern_login"]); $p->addComponent($login); } else { $p->addComponent('<div class="POS Boton">No permitir</div>'); $p->addComponent('<div style="margin-right:0px" class="POS Boton OK" onclick="window.location = \'' . $_GET["extern_login"] . '?au=\' + Ext.util.Cookies.get(\'at\')" >Permitir</div>'); } //var_dump(SesionController::Actual()); $p->render(); die; } if (isset($_GET["cs"]) && $_GET["cs"] == 1) { SesionController::Cerrar(); } //antes de crear el componente de login, //vamos a revisar si el usuario tiene una //sesion iniciada, y lo adentramos if (SesionController::isLoggedIn()) { die(header("Location: g/")); } $page = new PosComponentPage("Iniciar sesion"); $page->addComponent("<style>\n\t\t.devsitePage .nav > .content{\n\t\t\tbackground:white;\t\n\t\t}\n\t\t.devsitePage .menu a.logo {\n\t\t\tborder-right: 0px;\n\t\t\tpadding: 0px;\n\t\t}\n\t\t.devsitePage .bodyText{\n\t\t\tmargin-left: 0px;\n\t\t}</style>"); $login = new LoginComponent(); $login->setLoginApiCall("api/sesion/iniciar/"); $page->addComponent($login); $page->render();
<?php if (!class_exists("PHPUnit_Runner_Version")) { define("BYPASS_INSTANCE_CHECK", false); require_once "../../../server/bootstrap.php"; } $page = new ClienteComponentPage("Bienvendio a POS ERP"); $banner = new BannerComponent("POS ERP", "Bienvenido a POS ERP <br>un sistema de gestion empresarial", "../../../media/EAbydW1M_XR.png"); $page->addComponent($banner); //buscar si tiene ordenes de servico a su nombre $sesion_actual = SesionController::Actual(); $ordenes_array = new OrdenDeServicio(array("id_usuario_venta" => $sesion_actual["id_usuario"])); $ordenes = OrdenDeServicioDAO::search($ordenes_array); if (sizeof($ordenes) > 0) { $page->addComponent(new TitleComponent("Sus ordenes de servicio", 2)); $table = new TableComponent(array("id_servicio" => "Servicio", "fecha_orden" => "Fecha"), $ordenes); function renderIdServicio($id) { $serv = ServicioDAO::getByPK($id); return $serv->getNombreServicio(); } $table->addColRender("fecha_orden", "FormatTime"); $table->addOnClick("id_orden_de_servicio", "(function(a){ window.location = 'servicios.detalle.orden.php?oid='+a; })"); $table->addColRender("id_servicio", "renderIdServicio"); $page->addComponent($table); } $page->render();
define("BYPASS_INSTANCE_CHECK", false); require_once "../../../server/bootstrap.php"; } $page = new GerenciaComponentPage(); $page->partialRender(); ?> <table> <tr> <td><img src="http://cdn1.iconfinder.com/data/icons/musthave/48/Stock%20Index%20Up.png"></td> <td><strong>Su configuracion esta incompleta.</strong><br>De una vuelta por la configuracion de Caffeina POS para importar sus clientes y productos.</td> </tr> </table> <?php $banner = new BannerComponent("POS ERP", "Bienvenido a POS ERP <br>un sistema de gestion empresarial", "../../media/EAbydW1M_XR.png"); $page->addComponent($banner); /* ************************************************* * Orden de Servicio Pendientes * ************************************************* */ $s = SesionController::Actual(); $ordenes_mias = OrdenDeServicioDAO::search(new OrdenDeServicio(array("id_usuario_asignado" => $s["id_usuario"], "activa" => true))); switch (sizeof($ordenes_mias)) { case 0: break; case 1: $page->addComponent(new TitleComponent("Tienes 1 orden de servicio pendiente.", 3)); break; default: $page->addComponent(new TitleComponent("Tienes " . sizeof($ordenes_mias) . " ordenes de servicio pendientes.", 3)); } $page->render();
protected function setUp() { SesionController::Iniciar(123, 1, true); CategoriaContactoDAO::save(new CategoriaContacto(array('id' => 1, 'nombre' => 'padre', 'descripcion' => 'Uno', 'activa' => 1))); CategoriaContactoDAO::save(new CategoriaContacto(array('id' => 2, 'id_padre' => 1, 'nombre' => 'hijo', 'descripcion' => 'Dos', 'activa' => 1))); }
/** * * Permite dar conocer al sistema las verdaderas existencias en un almacen, o sucursal. * * @param inventario json [{id_producto: 1,id_unidad: 2,cantidad: 0,id_lote : 2}] * @param id_sucursal int * */ static function Fisico($inventario, $id_sucursal = "") { //POS.API.POST("api/inventario/fisico", {inventario : Ext.JSON.encode([{id_producto:8, id_unidad:1, cantidad:7, id_lote:1}]) } , {callback:function(){}}) $s = SesionController::Actual(); Logger::log("---------- INVENTARIO FISICO SE ENCONTRARON " . count($inventario) . " AJUSTES ----------"); foreach ($inventario as $producto) { //self::ajustarLoteProducto($producto->id_lote, $producto->id_producto, $producto->id_unidad); //[{id_producto: 1,id_unidad: 2,cantidad: 0,id_lote : 2}] $producto->nombre = ProductoDAO::getByPK($producto->id_producto)->getNombreProducto(); Logger::log(" Estamos en {$producto->nombre}, id_unidad {$producto->id_unidad}, {$producto->cantidad} " . UnidadMedidaDAO::getByPK($producto->id_unidad)->getAbreviacion() . ", lote {$producto->id_lote}"); try { //verificamos si el lote indicado existe if (is_null($producto->id_lote) || strlen($producto->id_lote) == 0) { throw new InvalidDataException("No selecciono a que lote ira el producto {$producto->id_producto}"); } //busquemos el id del lote if (!($lote = LoteDAO::getByPK($producto->id_lote))) { throw new InvalidDataException("No se tiene registro del lote {$producto->id_lote}"); } //verificamos que exista la unidad de medida y este activa if (!UnidadMedidaDAO::getByPK($producto->id_unidad)) { throw new InvalidDataException("La unidad de medida {$producto->id_unidad} no existe, o no esta activa."); } //busquemos si este producto ya existe en este lote $lote_producto = LoteProductoDAO::getByPK($lote->getIdLote(), $producto->id_producto); if (is_null($lote_producto)) { Logger::log("El producto no estaba en el lote, se insertara"); /* //no existe, insertar $loteProducto = new LoteProducto(array( "id_lote" => $lote->getIdLote(), "id_producto" => $producto->id_producto, "cantidad" => $producto->cantidad, "id_unidad" => $producto->id_unidad )); LoteProductoDAO::save($loteProducto); Logger::log("Se guardo el LoteProducto : id_lote {$lote->getIdLote()}, id_producto {$producto->id_producto}, cantidad {$producto->cantidad} id_unidad {$producto->id_unidad}"); $loteEntrada = new LoteEntrada(array( "id_lote" => $lote->getIdLote(), "id_usuario" => $s['id_usuario'], "fecha_registro" => time(), "motivo" => "Entrada por ajuste de inventario" )); LoteEntradaDAO::save($loteEntrada); Logger::log("Se guardo el LoteEntrada: id_lote {$lote->getIdLote()}, id_usuario {$s['id_usuario']}, motivo {Entrada por ajuste de inventario}"); */ AlmacenesController::EntradaLote($lote->getIdLote(), array($producto), "Entrada por ajuste de inventario"); } else { Logger::log("El producto si estaba en el lote, verificaremos las cantidades"); //revisemos si es de la misma unidad if ($lote_producto->getIdUnidad() == $producto->id_unidad) { Logger::log("Se encontro que la unidad enviada es igual a la unidad del lote producto"); Logger::log("Se detecto una merma de {$producto->cantidad} " . UnidadMedidaDAO::getByPK($producto->id_unidad)->getAbreviacion() . " de {$producto->nombre}"); //$existencias_lote = ProductoDAO::ExistenciasLote($producto->id_producto, $lote->getIdLote(), $lote_producto->getIdUnidad()); $existencias_lote = ProductoDAO::ExistenciasTotales($producto->id_producto); Logger::log("Se encontraron {$existencias_lote} existencias en el lote {$lote->getIdLote()} para el producto {$producto->id_producto}"); } else { Logger::log("Se encontro que la unidad enviada es diferente a la unidad del lote producto, se procede a transformar"); //$existencias_lote = ProductoDAO::ExistenciasLote($producto->id_producto, $lote->getIdLote(), $lote_producto->getIdUnidad()); $existencias_lote = ProductoDAO::ExistenciasTotales($producto->id_producto); Logger::log("Se encontraron {$existencias_lote} " . UnidadMedidaDAO::getByPK($lote_producto->getIdUnidad())->getAbreviacion() . " en el lote {$lote->getIdLote()} para el producto " . ProductoDAO::getByPK($producto->id_producto)->getNombreProducto() . " , nosotros necesitamos que se transforme en " . UnidadMedidaDAO::getByPK($producto->id_unidad)->getAbreviacion()); //var_dump($producto->id_unidad, $lote_producto->getIdUnidad(), $existencias_lote); try { Logger::log("Enviara a transformar unidad base : {$producto->id_unidad}, unidad a transformar : {$lote_producto->getIdUnidad()}, cantidad a transformar : {$existencias_lote}"); $existencias_lote = UnidadMedidaDAO::convertir($lote_producto->getIdUnidad(), $producto->id_unidad, $existencias_lote); Logger::log("Como producto de la transformacion se obtuvo {$existencias_lote} "); } catch (BusinessLogicException $ide) { //no se pudo convertir porque son de //diferentes categorias throw $ide; //mostrar una excpetion mas fresona } } Logger::log("se evaluara {$existencias_lote} - {$producto->cantidad}"); //hacemos el ajuste $diff = $existencias_lote - $producto->cantidad; if ($diff > 0) { //entonces hay una merma y se reporta una salida al lote igual a $diff, especificando en motivo el id del movimiento realizado //se actualiza la cantidad de producto en lote producto //AlmacenesController::Salida($l->getIdAlmacen(), $producto, "100"); $diff = abs($diff); Logger::log("Se detecto una merma de {$diff} " . UnidadMedidaDAO::getByPK($producto->id_unidad)->getAbreviacion() . " de {$producto->nombre}"); /* $lote_salida = new LoteSalida(array( "id_lote" => $lote->getIdLote(), "id_usuario" => $s['id_usuario'], "fecha_registro" => time(), "motivo" => "Salida de producto por ajuste de inventario (merma)" )); LoteSalidaDAO::save($lote_salida); Logger::log("Se creo un lote salida id_lote {$lote->getIdLote()}, id_usuario {$s['id_usuario']}, motivo Salida de producto por ajuste de inventario (merma)"); $lote_salida_producto = new LoteSalidaProducto(array( "id_lote_salida" => $lote_salida->getIdLoteSalida(), "id_producto" => $producto->id_producto, "id_unidad" => $producto->id_unidad, "cantidad" => $producto->cantidad )); LoteSalidaProductoDAO::save($lote_salida_producto); Logger::log("Se creo un lote salida producto con id_lote_salida {$lote_salida->getIdLoteSalida()}, id_producto {$producto->id_producto}, id_unidad {$producto->id_unidad}, cantidad {$producto->cantidad}"); */ AlmacenesController::SalidaLote($lote->getIdLote(), array(array("id_producto" => $producto->id_producto, "cantidad" => $diff, "id_unidad" => $producto->id_unidad)), "Salida de producto por ajuste de inventario (merma)"); } if ($diff < 0) { $diff = abs($diff); //entonces hay un sobrante y se reporta una entrada al lote igual a $diff, especificando en motivo el id del movimiento realizado //se actualiza la cantidad de producto en lote producto //AlmacenesController::Entrada($l->getIdAlmacen(), $producto, "101"); Logger::log("Se detecto una sobrante de {$diff} " . UnidadMedidaDAO::getByPK($producto->id_unidad)->getAbreviacion()); /* $lote_entrada = new LoteEntrada(array( "id_lote" => $lote->getIdLote(), "id_usuario" => $s['id_usuario'], "fecha_registro" => time(), "motivo" => "Entrada de producto por ajuste de inventario (sobrante)" )); LoteEntradaDAO::save($lote_entrada); Logger::log("Se creo un lote entrada id_lote {$lote->getIdLote()}, id_usuario {$s['id_usuario']}, motivo Entrada de producto por ajuste de inventario (sobrante)"); $lote_entrada_producto = new LoteEntradaProducto(array( "id_lote_entrada" => $lote_entrada->getIdLote(), "id_producto" => $producto->id_producto, "id_unidad" => $producto->id_unidad, "cantidad" => $producto->cantidad )); LoteEntradaProductoDAO::save($lote_entrada_producto); Logger::log("Se creo un lote entrada producto con id_lote_entrada {$lote_entrada->getIdLoteEntrada()}, id_producto {$producto->id_producto}, id_unidad {$producto->id_unidad}, cantidad {$producto->cantidad}"); */ //AlmacenesController::EntradaLote($lote->getIdLote(), array($producto), "Entrada de producto por ajuste de inventario (sobrante)"); AlmacenesController::EntradaLote($lote->getIdLote(), array(array("id_producto" => $producto->id_producto, "cantidad" => $diff, "id_unidad" => $producto->id_unidad)), "Entrada de producto por ajuste de inventario (sobrante)"); } //TODO:HAY QUE AHCER PRUEBAS EXHAUSTIVAS PARA VER SI ESTE ULTIMO BLOQUE DE CODIGO SE DEBERIA DE ELIMINAR //actualizamos las existencias de lote producto if ($diff != 0) { Logger::log("Se procede a hacer el ajuste del lote producto"); self::ajustarLoteProducto($producto->id_lote, $producto->id_producto, $producto->id_unidad); } else { Logger::log("Se detecto que la cantidad en tote producto concuerda con la cantidad inventariada, pero aun asi se llamara al metodo de ajuste de prodcuto"); self::ajustarLoteProducto($producto->id_lote, $producto->id_producto, $producto->id_unidad); } } } catch (InvalidDataException $e) { Logger::error($e); DAO::transRollback(); throw $e; } catch (exception $e) { Logger::error($e); DAO::transRollback(); throw new InvalidDatabaseOperationException($e); } } }
/** * *Se crea un nuevo abono, la caja o sucursal y el usuario que reciben el abono se tomaran de la sesion. La fecha se tomara del servidor * * @param id_deudor int Id del usuario o la sucursal que realiza el abono, las sucursales seran negativas * @param tipo_pago json JSON con la informacion que describe el tipo de pago, si es con cheque, en efectivo o con tarjeta * @param monto float monto abonado de la sucursal * @param nota string Nota del abono * @param id_venta int Id de la venta a la que se le abona * @param varios bool True si el monto sera repartido en los prestamos,ventas o compras mas antiguas. Esto se define si se pasa el valor id_venta,id_prestamo o id_compra * @param cheques json Se toma el nombre del banco, el monto y los ultimos cuatro numeros del o los cheques usados para este abono * @param id_prestamo int Id del prestamo al que se le esta abonando * @param id_compra int Id de la compra a la que se abona * @return id_abono int El id autogenerado del abono de la sucursal **/ public static function NuevoAbono($id_deudor, $monto, $tipo_pago, $billetes = null, $cheques = null, $id_compra = null, $id_prestamo = null, $id_venta = null, $nota = null) { Logger::log("Insertando nuevo abono ... "); //Se obtiene la sesion del usuario $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 AccessDeniedException("No se pudo obtener el usuario de la sesion, ya inicio sesion?"); } //Se validan los parametros obtenidos $validar = self::validarParametrosAbono($monto, $id_deudor, $nota, $tipo_pago); if (is_string($validar)) { Logger::error($validar); throw new Exception($validar); } //Si el tipo de pago es con cheque y no se reciben cheques, lanzas una excepcion if ($tipo_pago === "cheque" && is_null($cheques)) { Logger::error("Se intenta pagar con cheque mas no se envio info de cheques"); throw new Exception("No se recibio informacion del cheque"); } //Se inicializan las variables de los parametros de las tablas de abonos $usuario = UsuarioDAO::getByPK($id_deudor); $id_sucursal = self::getSucursal(); $id_caja = self::getCaja(); $fecha = time(); $cancelado = 0; $abono = null; //Nuevo regitro del abono $from = 0; //Bandera que indica a que operacion pertenece el abono $operacion = null; //Objeto de la operacion, puede ser un objeto de venta, de ocmpra o de prestamo /* * Se valida de que operacion pertenece el abono y de acuerdo a lo obtenido, se realizan * las operaciones necesarias en cada tabla. * * Primero se valida que la operacion exista, que sea a credito, que no haya sido cancelada, * que no haya sido saldada y que no se abone mas del total de la operacion. * * Despues se inicializa el registro de la tabla correspondiente, se modifica el saldo del deudor * y se activa la bandera from */ if (!is_null($id_compra)) { /************************************************************* * abono a compra ************************************************************* */ Logger::log("Abono pertenece a compra, compraid=" . $id_compra); $operacion = CompraDAO::getByPK($id_compra); if (is_null($operacion)) { Logger::error("La compra con id: " . $id_compra . " no existe"); throw new Exception("La compra con id: " . $id_compra . " no existe"); } if ($operacion->getTipoDeCompra() !== "credito") { Logger::error("La compra especificada no es a credito, no se puede abonar a una compra de contado"); throw new Exception("La compra especificada no es a credito, no se puede abonar a una compra de contado"); } if ($operacion->getCancelada()) { Logger::error("La compra ya ha sido cancelada, no se puede abonar a esta compra"); throw new Exception("La compra ya ha sido cancelada, no se puede abonar a esta compra"); } if ($operacion->getSaldo() > 0) { Logger::error("La compra ya ha sido saldada, no se puede abonar a esta compra"); throw new Exception("La compra ya ha sido saldada, no se puede abonar a esta compra"); } if ($operacion->getSaldo() - $monto < 0) { Logger::error("No se puede abonar esta cantidad a esta compra, pues sobrepasa el total de la misma"); throw new Exception("No se puede abonar esta cantidad a esta compra, pues sobrepasa el total de la misma"); } Logger::log("Insertando abono compra..."); $abono = new AbonoCompra(); $abono->setIdCompra($id_compra); $abono->setIdReceptor($id_deudor); $abono->setIdDeudor($id_usuario); $usuario->setSaldoDelEjercicio($usuario->getSaldoDelEjercicio() - $monto); $from = 1; } else { if (!is_null($id_prestamo)) { /************************************************************* * abono a prestamo ************************************************************* */ $operacion = PrestamoDAO::getByPK($id_prestamo); if (is_null($operacion)) { Logger::error("El prestamo con id: " . $id_prestamo . " no existe"); throw new Exception("El prestamo con id: " . $id_prestamo . " no existe"); } if ($operacion->getMonto() <= $operacion->getSaldo()) { Logger::error("El prestamo ya ha sido saldado, no se puede abonar a este prestamo"); throw new Exception("El prestamo ya ha sido saldad0, no se puede abonar a este prestamo"); } if ($operacion->getMonto() < $operacion->getSaldo() + $monto) { Logger::error("No se puede abonar esta cantidad a este prestamo, pues sobrepasa el total del mismo"); throw new Exception("No se puede abonar esta cantidad a este prestamo, pues sobrepasa el total del mismo"); } $abono = new AbonoPrestamo(); $abono->setIdPrestamo($id_prestamo); $abono->setIdReceptor($id_usuario); $abono->setIdDeudor($id_deudor); $usuario->setSaldoDelEjercicio($usuario->getSaldoDelEjercicio() + $monto); $from = 2; } else { if (!is_null($id_venta)) { /************************************************************* * abono a venta ************************************************************* */ $operacion = VentaDAO::getByPK($id_venta); if (is_null($operacion)) { Logger::error("La venta con id: " . $id_venta . " no existe"); throw new Exception("La venta con id: " . $id_venta . " no existe"); } if ($operacion->getTipoDeVenta() !== "credito") { Logger::error("La ventaa especificada no es a credito, no se puede abonar a una venta de contado"); throw new Exception("La venta especificada no es a credito, no se puede abonar a una venta de contado"); } if ($operacion->getCancelada()) { Logger::error("La venta ya ha sido cancelada, no se puede abonar a esta venta"); throw new Exception("La venta ya ha sido cancelada, no se puede abonar a esta venta"); } if ($operacion->getSaldo() <= 0) { Logger::error("La venta ya ha sido saldada, no se puede abonar a esta venta"); Logger::log("La venta {$id_venta} tiene un total de " . $operacion->getTotal() . " y un saldo pendiente de " . $operacion->getSaldo() . " por lo tanto ya ha sido saldada."); throw new Exception("La venta ya ha sido saldada, no se puede abonar a esta venta"); } if ($operacion->getSaldo() - $monto < 0) { Logger::error("No se puede abonar esta cantidad a esta venta, pues sobrepasa el total de la misma"); throw new Exception("No se puede abonar esta cantidad a esta venta, pues sobrepasa el total de la misma"); } Logger::log("Insertando AbonoVenta..."); $abono = new AbonoVenta(); $abono->setIdVenta($id_venta); $abono->setIdReceptor($id_usuario); $abono->setIdDeudor($id_deudor); //(OLD) $usuario->setSaldoDelEjercicio($usuario->getSaldoDelEjercicio() + $monto); //Figu: se establece el saldo del cliente restandole la venta y a su vez si tiene adelanto se le incrementa su saldo //$usuario->setSaldoDelEjercicio( ( $usuario->getSaldoDelEjercicio() - $operacion->getTotal() ) + $monto ); $usuario->setSaldoDelEjercicio($usuario->getSaldoDelEjercicio() + $monto); $from = 3; } else { Logger::error("No se recibio si el abono sera para una venta, una compra o un prestamo, no se hace nada"); throw new Exception("No se recibio si el abono sera para una venta, una compra o un prestamo, no se hace nada"); } } } //Una vez hecho los cambios particulaes, se realizan los cambios generales $operacion->setSaldo($operacion->getSaldo() - $monto); $abono->setCancelado($cancelado); $abono->setIdCaja($id_caja); $abono->setFecha($fecha); $abono->setIdSucursal($id_sucursal); $abono->setMonto($monto); $abono->setNota($nota); $abono->setTipoDePago($tipo_pago); $id_cheques = array(); $id_abono = null; DAO::transBegin(); try { //Si se reciben cheques y el tipo de pago es cheque, se genera el nuevo cheque y //se va almacenando su id en el arreglo id_cheques if ($tipo_pago === "cheque" && !is_null($cheques)) { foreach ($cheques as $cheque) { array_push($id_cheques, ChequesController::NuevoCheque($cheque["nombre_banco"], $cheque["monto"], $cheque["numero"], $cheque["expedido"])); } } //Dependiendo de que operacion se realizo se van guardando los cheques, los abonos y las operaciones //pues todas cambiaron. //Si se recibieron cheques, no se modifica la caja. //En el caso de las ventas, al final se busca la venta en la tabla venta_empresa y se pone como saldada //si ese ha sido el caso switch ($from) { case 1: AbonoCompraDAO::save($abono); CompraDAO::save($operacion); $id_abono = $abono->getIdAbonoCompra(); $cheque_abono_compra = new ChequeAbonoCompra(); $cheque_abono_compra->setIdAbonoCompra($id_abono); if (!is_null($id_caja) && empty($id_cheques)) { CajasController::modificarCaja($id_caja, 0, $billetes, $monto); } foreach ($id_cheques as $id_cheque) { $cheque_abono_compra->setIdCheque($id_cheque); ChequeAbonoCompraDAO::save($cheque_abono_compra); } break; case 2: AbonoPrestamoDAO::save($abono); PrestamoDAO::save($operacion); $id_abono = $abono->getIdAbonoPrestamo(); $cheque_abono_prestamo = new ChequeAbonoPrestamo(); $cheque_abono_prestamo->setIdAbonoPrestamo($id_abono); if (!is_null($id_caja) && empty($id_cheques)) { CajasController::modificarCaja($id_caja, 1, $billetes, $monto); } foreach ($id_cheques as $id_cheque) { $cheque_abono_prestamo->setIdCheque($id_cheque); ChequeAbonoPrestamoDAO::save($cheque_abono_prestamo); } break; case 3: AbonoVentaDAO::save($abono); VentaDAO::save($operacion); $id_abono = $abono->getIdAbonoVenta(); $cheque_abono_venta = new ChequeAbonoVenta(); $cheque_abono_venta->setIdAbonoVenta($id_abono); if (!is_null($id_caja) && empty($id_cheques)) { CajasController::modificarCaja($id_caja, 1, $billetes, $monto); } foreach ($id_cheques as $id_cheque) { $cheque_abono_venta->setIdCheque($id_cheque); ChequeAbonoVentaDAO::save($cheque_abono_venta); } if ($operacion->getSaldo() >= $operacion->getTotal()) { $ventas_empresa = VentaEmpresaDAO::search(new VentaEmpresa(array("id_venta" => $operacion->getIdVenta()))); foreach ($ventas_empresa as $venta_empresa) { $venta_empresa->setSaldada(1); VentaEmpresaDAO::save($venta_empresa); } } } /* Fin switch de from */ UsuarioDAO::save($usuario); } catch (Exception $e) { DAO::transRollback(); Logger::error("Error al crear el abono: " . $e); throw new Exception("Error al crear el abono"); } DAO::transEnd(); Logger::log("Abono creado exitosamente"); return array("id_abono" => $id_abono); }
protected function setUp() { SesionController::Iniciar(123, 1, true); $this->configuracion = new Configuracion(array('descripcion' => 'productos_visibles_en_vc')); $this->json = array("nombre_producto", "descripcion"); }
public static function Corte($fecha_final, $id_sucursal, $total_efectivo) { if ($fecha_final > time()) { throw new BusinessLogicException("You must give a time in the past."); } if ($fecha_final == 0) { $fecha_final = time(); } $suc = SucursalDAO::getByPK($id_sucursal); if (is_null($suc)) { throw new InvalidDataException("'Sucursal' does not exist"); } $corte = EfectivoController::UltimoCorte($suc); if (is_null($corte)) { //'CordeDeSucursal' has never happende, //use the opening date. $start_date = $suc->getFechaApertura(); } else { $start_date = $corte->getFin(); } //ASSERT( $fecha_final . "<=" . $start_date ); $ingresos_por_tipo = array("BANCO" => 0.0, "CAJA" => 0.0); $ventas = VentasController::Lista($start_date, $fecha_final); //esto regresa, total, subtotal, impuesto $ventasTotal = VentaDAO::TotalVentasNoCanceladasAContadoDesdeHasta($start_date, $fecha_final); //$abonosTotal = AbonoVenta::TotalAbonosNoCanceladosDesdeHasta( $start_date, $fecha_final ); /* foreach( $ventas as $v ){ switch( $v->tipo_de_pago ){ cash : $ingresos[ cash ] += $v->getTotal(); banco : $ingresos[ banco ] += $v->getTotal() cheque : default: throw new Exception(); } } */ $cu = SesionController::Actual(); $corte = new CorteDeSucursal(); $corte->setIdSucursal($id_sucursal); $corte->setIdUsuario($cu["id_usuario"]); $corte->setInicio($start_date); $corte->setFin($fecha_final); $corte->setFechaCorte(time()); try { CorteDeSucursalDAO::save($corte); } catch (Exception $e) { throw new InvalidDatabaseException($e); } return array("id_corte_sucursal" => $corte->getIdCorteSucursal()); }
/** * *Hacer un seguimiento al cliente * * @param texto string El texto que ingresa el que realiza el seguimiento **/ static function NuevoSeguimiento($id_cliente, $texto) { $cliente = UsuarioDAO::getByPK($id_cliente); if (is_null($cliente)) { throw new InvalidDataException("Este cliente no existe"); } if (strlen($texto) == 0) { throw new InvalidDataException("El texto no puede ser vacio"); } $usuario_actual = SesionController::Actual(); $s = new ClienteSeguimiento(); $s->setIdCliente($id_cliente); $s->setIdUsuario($usuario_actual["id_usuario"]); $s->setFecha(time()); $s->setTexto($texto); try { ClienteSeguimientoDAO::save($s); } catch (Exception $e) { throw new InvalidDatabaseOperationException($e); } return array("id_cliente_seguimiento" => $s->getIdClienteSeguimiento()); }
/** * *Registra una nueva compra fuera de caja, puede usarse para que el administrador haga directamente una compra. El usuario y al sucursal seran tomados de la sesion. La fecha sera tomada del servidor. La empresa sera tomada del almacen del cual fueron tomados los productos. * * @param descuento float Monto descontado por descuentos * @param subtotal float Total de la compra antes de impuestos y descuentos. * @param detalle json Objeto que contendr el arreglo de id productos, cantidad, precio, descuento, id de unidad y procesado que involucran esta compra. * @param impuesto float Monto agregado por impuestos * @param tipo_compra string Si la compra es a credito o de contado * @param retencion float Monto agregado por retenciones * @param id_usuario_compra int Id usuario al que se le compra, si es a una sucursal, se pone el id en negativo * @param id_empresa int Id de la empresa a nombre de la cual se hace la compra * @param total float Total de la compra * @param cheques json Si el tipo de pago es con cheque, se almacena el nombre del banco, el monto y los ultimos 4 numeros del o de los cheques * @param saldo float Cantidad pagada de la * @param tipo_de_pago string Si el pago sera en efectivo, con cheque o tarjeta * @return id_compra int Id autogenerado por la inserci�n de la compra **/ public static function Nueva($descuento, $detalle, $id_empresa, $id_usuario_compra, $impuesto, $retencion, $subtotal, $tipo_compra, $total, $cheques = null, $id_sucursal = null, $saldo = 0, $tipo_de_pago = null) { Logger::log(" ===== Creando nueva compra... ===== "); //validemos al comprador $proveedor = UsuarioDAO::getByPK($id_usuario_compra); if (is_null($proveedor)) { Logger::error("el provedor {$id_usuario_compra} no exite"); throw new InvalidDataException("El proveedor no existe"); } if ($proveedor->getActivo() == false) { throw new BusinessLogicException("No se puede comprar de un proveedor no activo."); } //validemos la empresa $empresa = EmpresaDAO::getByPK($id_empresa); if (is_null($empresa)) { Logger::error("La empresa {$id_empresa} no existe"); throw new InvalidDataException("La empresa que compra no existe."); } if ($empresa->getActivo() == false) { throw new BusinessLogicException("Una empresa inactiva no puede hacer compras."); } //validemos los valores conocidos //( 0 >= descuento > 100, subtotal > 0, total >= subtotal, etc etc) //validemos sucursal $sucursal = null; if (!is_null($id_sucursal) && strlen($id_sucursal) > 0) { $sucursal = SucursalDAO::getByPK($id_sucursal); if (is_null($sucursal)) { Logger::error("La sucursal {$id_sucursal} no existe"); //throw new InvalidDataException("La sucural que se envio no existe."); } } //validemos detalles de compra //debe traer // -id_producto // -cantidad // -precio // -lote if (!is_array($detalle)) { throw InvalidDataException("El detalle no es un arreglo"); } for ($detalleIterator = 0; $detalleIterator < sizeof($detalle); $detalleIterator++) { //por cada producto // -debe existir // -si se lo compro a un proveedor no hay pedo // si se lo compro a un cliente, debe de tener comprar_caja = 1 // -debe tener cantidad mayor a 0 // -que exista el lote a donde va a ir $p = $detalle[$detalleIterator]; if (!isset($p->precio)) { throw new InvalidArgumentException("No se envio el precio"); } if (!isset($p->id_producto)) { throw new InvalidArgumentException("No se envio el id_producto"); } if (!isset($p->cantidad)) { throw new InvalidArgumentException("No se envio la cantidad"); } if (!isset($p->lote)) { throw new InvalidArgumentException("No se envio el lote"); } $producto = ProductoDAO::getByPK($p->id_producto); if (is_null($producto)) { throw new InvalidArgumentException("El producto a comprar no existe"); } if ($p->cantidad <= 0) { throw new InvalidArgumentException("No puedes comprar 0 unidades"); } } $s = SesionController::getCurrentUser(); //terminaron las validaciones $compra = new Compra(); $compra->setIdVendedorCompra($id_usuario_compra); $compra->setTipoDeCompra($tipo_compra); $compra->setFecha(time()); $compra->setSubtotal($subtotal); $compra->setImpuesto($impuesto); $compra->setDescuento($descuento); $compra->setTotal($subtotal + $impuesto); $compra->setIdUsuario($s->getIdUsuario()); $compra->setIdEmpresa($id_empresa); $compra->setSaldo(0); $compra->setCancelada(false); $compra->setTipoDePago($tipo_de_pago); $compra->setRetencion(0); try { DAO::transBegin(); CompraDAO::save($compra); } catch (Exception $e) { DAO::transRollback(); throw InvalidDatabaseOperationException($e); } for ($detalleIterator = 0; $detalleIterator < sizeof($detalle); $detalleIterator++) { //por cada producto // --- procesos --- // -insertar en productoempresa // -insertar en loteproducto // -insertar en entradalote // -si el tipo de precio de venta es costo, actualizar // -insertar compra producto $p = $detalle[$detalleIterator]; try { ProductoEmpresaDAO::save(new ProductoEmpresa(array("id_empresa" => $id_empresa, "id_producto" => $p->id_producto))); if (is_null($p->lote)) { throw new InvalidDataException("No selecciono a que lote ira el producto " . $p->id_producto); } if (strlen($p->lote) == 0) { throw new InvalidDataException("No selecciono a que lote ira el producto " . $p->id_producto); } //busquemos el id del lote $l = LoteDAO::search(new Lote(array("folio" => $p->lote))); $l = $l[0]; //busquemos la unidad que nos mandaron $uAbreviacion = $p->id_unidad; $uResults = UnidadMedidaDAO::search(new UnidadMedida(array("abreviacion" => $uAbreviacion, "activa" => 1))); if (sizeof($uResults) != 1) { throw new InvalidDataException("La unidad de medida `" . $p->id_unidad . "` no existe, o no esta activa."); } else { $p->id_unidad = $uResults[0]->getIdUnidadMedida(); } //busequemos si este producto ya existe en este lote $lp = LoteProductoDAO::getByPK($l->getIdLote(), $p->id_producto); if (is_null($lp)) { //no existe, insertar $loteProducto = new LoteProducto(array("id_lote" => $l->getIdLote(), "id_producto" => $p->id_producto, "cantidad" => $p->cantidad, "id_unidad" => $p->id_unidad)); LoteProductoDAO::save($loteProducto); } else { //ya existe, sumar //revisemos si es de la misma unidad if ($lp->getIdUnidad() == $p->id_unidad) { //es igual, solo hay que sumar $lp->setCantidad($lp->getCantidad() + $p->cantidad); } else { //no es igual, hay que convertir try { $r = UnidadMedidaDAO::convertir($p->id_unidad, $lp->getIdUnidad(), $p->cantidad); } catch (BusinessLogicException $ide) { //no se pudo convertir porque son de //diferentes categorias throw $ide; //mostrar una excpetion mas fresona } $lp->setCantidad($lp->getCantidad() + $r); } //$lp->setCantidad( $lp->getCantidad() + $p->cantidad ); LoteProductoDAO::save($lp); } $loteEntrada = new LoteEntrada(array("id_lote" => $l->getIdLote(), "id_usuario" => $s->getIdUsuario(), "fecha_registro" => time(), "motivo" => "Compra a Proveedor")); LoteEntradaDAO::save($loteEntrada); LoteEntradaProductoDAO::save(new LoteEntradaProducto(array("id_lote_entrada" => $loteEntrada->getIdLoteEntrada(), "id_producto" => $p->id_producto, "id_unidad" => $p->id_unidad, "cantidad" => $p->cantidad))); $compraProducto = new CompraProducto(array("id_compra" => $compra->getIdCompra(), "id_producto" => $p->id_producto, "cantidad" => $p->cantidad, "precio" => $p->precio, "descuento" => 0, "impuesto" => 0, "id_unidad" => $p->id_unidad, "retencion" => 0)); CompraProductoDAO::save($compraProducto); } catch (InvalidDataException $e) { Logger::error($e); DAO::transRollback(); throw $e; } catch (exception $e) { Logger::error($e); DAO::transRollback(); throw new InvalidDatabaseOperationException($e); } } //for try { DAO::transEnd(); } catch (Exception $e) { throw InvalidDatabaseOperationException($e); } Logger::log("===== COMPRA " . $compra->getIdCompra() . " EXITOSA ===== "); return array("id_compra" => $compra->getIdCompra()); }
public static function NuevoCheque($nombre_banco, $monto, $numero, $expedido, $id_usuario = null) { Logger::log("creando cheque"); //Se validan los parametros obtenidos $validar = self::validarParametrosCheque(null, $nombre_banco, $monto, $numero, $expedido); if (is_string($validar)) { Logger::error($validar); throw new Exception($validar); } $cheque = new Cheque(); $cheque->setNombreBanco($nombre_banco); $cheque->setMonto($monto); $cheque->setNumero($numero); $cheque->setExpedido($expedido); if ($expedido) { $id_usuario = SesionController::getCurrentUser(); 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?"); } } $cheque->setIdUsuario($id_usuario); DAO::transBegin(); try { ChequeDAO::save($cheque); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear el cheque: " . $e); throw "No se pudo crear el cheque"; } DAO::transEnd(); Logger::log("Cheque creado exitosamente"); return $cheque->getIdCheque(); }
public static function EditarDireccion($direccion) { //verificamos si se cambiaron las direcciones if (!is_null($direccion)) { Logger::log("\tEditando direccion ..."); if (!is_array($direccion)) { //Logger::error("Verifique el formato de los datos de las direcciones, se esperaba un array "); //throw new Exception("Verifique el formato de los datos de las empresas, se esperaba un array "); $direccion = object_to_array($direccion); } $_direccion = new Direccion($direccion); $d = DireccionDAO::getByPK($_direccion->getIdDireccion()); //verificamos si se va a editar una direccion o se va a crear una nueva if (isset($d->id_direccion)) { //se edita la direccion if (!($_direccion = DireccionDAO::getByPK($d->id_direccion))) { DAO::transRollback(); Logger::error("No se tiene registro de la dirección con id : {$direccion->id_direccion}"); throw new InvalidDataException("No se tiene registro de la dirección con id : {$direccion->id_direccion}"); } //bandera que indica si cambia algun parametro de la direccion $cambio_direccion = false; //calle if (array_key_exists('calle', $direccion)) { $_direccion->setCalle($direccion['calle']); $cambio_direccion = true; } //numero_exterior if (array_key_exists('numero_exterior', $direccion)) { $cambio_direccion = true; $_direccion->setNumeroExterior($direccion['numero_exterior']); } //numero_interior if (array_key_exists('numero_interior', $direccion)) { $cambio_direccion = true; $_direccion->setNumeroInterior($direccion['numero_interior']); } //referencia if (array_key_exists('referencia', $direccion)) { $cambio_direccion = true; $_direccion->setReferencia($direccion['referencia']); } //colonia if (array_key_exists('colonia', $direccion)) { $cambio_direccion = true; $_direccion->setColonia($direccion['colonia']); } //id_ciudad if (array_key_exists('id_ciudad', $direccion)) { $cambio_direccion = true; $_direccion->setIdCiudad($direccion['id_ciudad']); } //codigo_postal if (array_key_exists('codigo_postal', $direccion)) { $cambio_direccion = true; $_direccion->setCodigoPostal($direccion['codigo_postal']); } //telefono if (array_key_exists('telefono', $direccion)) { $cambio_direccion = true; $_direccion->setTelefono($direccion['telefono']); } //telefono2 if (array_key_exists('telefono2', $direccion)) { $cambio_direccion = true; $_direccion->setTelefono2($direccion['telefono2']); } //Si cambio algun parametro de direccion, se actualiza el usuario que modifica y la fecha if ($cambio_direccion) { $_direccion->setUltimaModificacion(time()); $id_usuario = SesionController::Actual(); $id_usuario = $id_usuario["id_usuario"]; if (is_null($id_usuario)) { DAO::transRollback(); Logger::error("No se pudo obtener al usuario de la sesion, ya inicio sesion?"); throw new Exception("No se pudo obtener al usuario de la sesion, ya inicio sesion?"); } $_direccion->setIdUsuarioUltimaModificacion($id_usuario); //guardamos la direccion try { Logger::log("Salvando direccion..."); DireccionDAO::save($_direccion); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo guardar la direccion " . $e); if ($e->getCode() == 901) { throw new Exception("Error al guardar direccion de la sucursal {$sucursal->getRazonSocial()}: " . $e->getMessage(), 901); } throw new Exception("Error al guardar direccion de la sucursal {$sucursal->getRazonSocial()}", 901); } } //cambio dir } //verificacion editar dir } // !is_null }
/** * *Actualizar? los tipo de cambio con respecto a la moneda base de la empresa. * * @param id_empresa int El id de la empresa * @param monedas json Los valores de las equivalencias de las monedas activas con respecto a la moneda base * @param moneda_base string El codigo de la moneda base, una cadena de tres caracteres: "MXN" **/ public static function ActualizarTiposCambio($id_empresa, $monedas, $moneda_base, $servicios) { $json_guardar = array(); $json_guardar["servicio"] = $servicios; $json_guardar["fecha"] = time(); $json_guardar["moneda_origen"] = $moneda_base; $json_guardar["tipos_cambio"] = array(); foreach ($monedas as $moneda) { if (!is_numeric($moneda->equivalencia)) { Logger::Log("La moneda {$moneda} no tiene un valor numerico asignado"); throw new BusinessLogicException("La moneda {$moneda} no tiene un valor numerico asignado"); } else { $obj = new stdClass(); $obj->moneda = $moneda->codigo; $obj->equivalencia = $moneda->equivalencia; $obj->conversion = "1 {$moneda_base} = " . $moneda->equivalencia . " " . $moneda->codigo; array_push($json_guardar["tipos_cambio"], $obj); } } $json_almacenar = json_encode($json_guardar); $c = new Configuracion(); $s = SesionController::getCurrentUser(); $c->setDescripcion("tipo_cambio"); $conf = ConfiguracionDAO::search($c); //se crea el registro de configuracion tipo_cambio if (count($conf) < 1) { $c->setValor($json_almacenar); $c->setFecha(time()); $c->setIdUsuario($s->getIdUsuario()); try { ConfiguracionDAO::save($c); $c_e = new ConfiguracionEmpresa(); $c_e->setIdConfiguracionEmpresa($c->getIdConfiguracion()); $c_e->setIdEmpresa($id_empresa); ConfiguracionEmpresaDAO::save($c_e); } catch (Exception $e) { Logger::error("No se pudo crear la configuracion de monedas: " . $e->getMessage()); throw new InvalidDatabaseOperationException("No se pudo crear la configuracion de monedas " . $e->getMessage()); } } else { $editar = $conf[0]; $editar->setValor($json_almacenar); $editar->setFecha(time()); $editar->setIdUsuario($s->getIdUsuario()); try { ConfiguracionDAO::save($editar); } catch (Exception $e) { Logger::error("No se pudo crear la configuracion de monedas: " . $e->getMessage()); throw new InvalidDatabaseOperationException("No se pudo crear la configuracion de monedas " . $e->getMessage()); } } $monedabase = new Moneda(); $monedabase->setSimbolo($moneda_base); $mb = MonedaDAO::search($monedabase); $historial_tc = new HistorialTipoCambio(); $historial_tc->setFecha(time()); $historial_tc->setJsonEquivalencias($json_almacenar); $historial_tc->setIdEmpresa($id_empresa); $historial_tc->setIdMonedaBase($mb[0]->getIdMoneda()); try { HistorialTipoCambioDAO::save($historial_tc); } catch (Exception $e) { Logger::error("No se pudo guardar el historial tipo cambio: " . $e->getMessage()); throw new InvalidDatabaseOperationException("No se pudo guardar el historial tipo cambio: " . $e->getMessage()); } return array("status" => "ok"); }
require_once 'controller/factura.controller.php'; break; case 1300: require_once 'controller/printer.controller.php'; break; case 1400: require_once 'controller/client.controller.php'; break; case 2000: break; case 2001: print '{"success":true, "sesion": false }'; break; case 2004: //revisar login $token = SesionController::Iniciar($args["p"], $args["u"], true); echo json_encode(array("success" => $token["login_succesful"], "text" => "Credenciales invalidas")); break; case 2005: //dispatch $debug = isset($args['DEBUG']) ? "?debug" : ""; echo "<script>window.location = 'sucursal.php" . $debug . "'; </script>"; break; case 3000: $c = new stdClass(); $c->servicios = array(); foreach (ServicioDAO::getAll() as $servicio) { array_push($c->servicios, array("id_servicio" => $servicio->getIdServicio(), "nombre_servicio" => $servicio->getNombreServicio())); } echo json_encode($c); break;
<?php define("BYPASS_INSTANCE_CHECK", false); require_once "../../../server/bootstrap.php"; $page = new GerenciaComponentPage(); EfectivoController::NuevoCorte(); $page->render(); return; // // Parametros necesarios // $page->requireParam("cid", "GET", "Esta caja no existe."); $esta_caja = CajaDAO::getByPK($_GET["cid"]); $page->addComponent(new TitleComponent("Corte a la caja " . $esta_caja->getDescripcion() . ". El saldo esperado es de: " . $esta_caja->getSaldo(), 3)); // // Forma de producto // $form = new DAOFormComponent(new CorteDeCaja()); $form->addApiCall("api/sucursal/caja/corte", "GET"); $form->onApiCallSuccessRedirect("sucursales.lista.caja.php"); $form->hideField(array("id_corte_de_caja", "saldo_esperado", "id_caja", "fecha")); $form->makeObligatory(array("saldo_real", "saldo_final")); $form->createComboBoxJoinDistintName("id_cajero", "id_usuario", "nombre", UsuarioDAO::search(new Usuario(array("id_rol" => 3, "activo" => 1), SesionController::getCurrentUser()))); $form->createComboBoxJoinDistintName("id_cajero_nuevo", "id_usuario", "nombre", UsuarioDAO::search(new Usuario(array("id_rol" => 3, "activo" => 1), SesionController::getCurrentUser()))); $form->setValueField("id_caja", $_GET["cid"]); $form->sendHidden("id_caja"); $page->addComponent($form); $page->render();
private static function Cotizar($descuento, $id_comprador_venta, $impuesto, $subtotal, $tipo_venta, $total, $datos_cheque = null, $detalle_orden = null, $detalle_paquete = null, $detalle_venta = null, $id_sucursal = null, $saldo = "0", $tipo_de_pago = null) { Logger::log("Cotizando ...."); //Se obtiene el id del usuario actualmente logueado $aS = SesionController::Actual(); $id_usuario = $aS["id_usuario"]; //Se busca al usuario comprador $usuario = UsuarioDAO::getByPK($id_comprador_venta); if (!is_null($id_sucursal)) { $sucursal = SucursalDAO::getByPK($id_sucursal); if (is_null($sucursal)) { Logger::error("La sucursal " . $id_sucursal . " no existe"); throw new InvalidDataException("La sucursal no existe", 901); } if (!$sucursal->getActiva()) { Logger::error("La sucursal " . $id_sucursal . " esta desactivada"); throw new InvalidDataException("La sucursal esta desactivada", 901); } } //Se inicializa la venta con los parametros obtenidos $venta = new Venta(); $venta->setRetencion(0); $venta->setEsCotizacion(true); $venta->setIdCompradorVenta($id_comprador_venta); $venta->setSubtotal($subtotal); $venta->setImpuesto($impuesto); $venta->setTotal($total); $venta->setDescuento($descuento); $venta->setTipoDeVenta($tipo_venta); $venta->setIdCaja(null); $venta->setIdSucursal($id_sucursal); $venta->setIdUsuario($id_usuario); $venta->setIdVentaCaja(NULL); $venta->setCancelada(0); $venta->setTipoDePago(null); $venta->setSaldo(0); $venta->setFecha(time()); DAO::transBegin(); try { VentaDAO::save($venta); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo realizar la venta: " . $e); throw new Exception("No se pudo realizar la venta", 901); } //Si el detalle de las ordenes compradas, el detalle de los paquetes y el detalle de los productos //son nulos, manda error. if (is_null($detalle_orden) && is_null($detalle_paquete) && is_null($detalle_venta)) { throw new InvalidDataException("No se recibieron ni paquetes ni productos ni servicios para esta venta", 901); } //Por cada detalle, se valida la informacion recibida, se guarda en un registro //que contiene el id de la venta generada y se guarda el detalle en su respectiva tabla. if (!is_null($detalle_venta)) { $detalle_producto = object_to_array($detalle_venta); if (!is_array($detalle_producto)) { throw new Exception("El detalle del producto es invalido", 901); } foreach ($detalle_producto as $d_p) { $d_producto = new VentaProducto(); $d_producto->setIdVenta($venta->getIdVenta()); if (!array_key_exists("id_producto", $d_p) || !array_key_exists("cantidad", $d_p) || !array_key_exists("precio", $d_p) || !array_key_exists("descuento", $d_p) || !array_key_exists("impuesto", $d_p) || !array_key_exists("retencion", $d_p) || !array_key_exists("id_unidad", $d_p)) { throw new Exception("El detalle del producto es invalido", 901); } Logger::log("Insertando venta_producto:"); $d_producto->setCantidad($d_p["cantidad"]); $d_producto->setDescuento($d_p["descuento"]); $d_producto->setIdProducto($d_p["id_producto"]); $d_producto->setIdUnidad($d_p["id_unidad"]); $d_producto->setImpuesto($d_p["impuesto"]); $d_producto->setPrecio($d_p["precio"]); $d_producto->setRetencion($d_p["retencion"]); Logger::log($d_producto); try { VentaProductoDAO::save($d_producto); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo realizar la venta: " . $e); throw new Exception("No se pudo realizar la venta", 901); } } } /* Fin de if para detalle_producto */ DAO::transEnd(); Logger::log("====== Cotizacion realizada exitosamente ======== "); return array("id_venta" => $venta->getIdVenta()); }
private function _renderWrapper() { if (!$this->parital_head_rendered) { $this->parital_head_rendered = true; ?> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="es" > <head> <title><?php echo $this->title; ?> </title> <meta charset=utf-8"> <link rel="stylesheet" type="text/css" href="http://api.caffeina.mx/ext-4.0.0/resources/css/ext-all.css" /> <script type="text/javascript" src="http://api.caffeina.mx/ext-4.0.0/ext-all.js"></script> <!-- <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> --> <!-- <script type="text/javascript" charset="utf-8" src="http://cdn.sencha.io/ext-4.1.0-gpl/ext-all.js"></script> --> <?php if (is_file("../css/basic.css")) { ?> <link type="text/css" rel="stylesheet" href="../css/basic.css"/><?php } ?> <?php if (is_file("../../css/basic.css")) { ?> <link type="text/css" rel="stylesheet" href="../../css/basic.css"/><?php } ?> <?php if (is_file("css/basic.css")) { ?> <link type="text/css" rel="stylesheet" href="css/basic.css"/><?php } ?> <script type="text/javascript" charset="utf-8" src="http://api.caffeina.mx/ext-4.0.0/examples/ux/grid/TransformGrid.js"></script> <?php if (is_file("../g/gerencia.js")) { ?> <script type="text/javascript" charset="utf-8" src="../g/gerencia.js"></script> <?php } else { ?> <script type="text/javascript" charset="utf-8" src="gerencia.js"></script> <?php } ?> <!--<script type="text/javascript" charset="utf-8" src="../g/gerencia.js"></script> --> <script type="text/javascript" charset="utf-8"> if(HtmlEncode===undefined){var HtmlEncode=function(a){var b=a.length,c=[];while(b--){var d=a[b].charCodeAt();if(d>127/*||d>90&&d<97*/){c[b]="&#"+d+";"}else{c[b]=a[b]}}return c.join("")}} </script> </head> <body class=""> <!-- <div id="FB_HiddenContainer" style="position:absolute; top:-10000px; width:0px; height:0px;"></div> --> <div class="devsitePage"> <div class="menu"> <div class="content"> <a class="logo" href="index.php"> <!--<img class="img" src="../../../media/N2f0JA5UPFU.png" alt="" width="166" height="17"/>--> <div style="width:166px; height: 17px"> </div> </a> <?php echo $this->_renderTopMenu(); ?> <a class="l"> <img style="margin-top:8px; display: none;" id="ajax_loader" src="../../media/loader.gif"> </a> <!-- --> <?php $s = SesionController::Actual(); if (!is_null($s["id_usuario"])) { ?> <script type="text/javascript" charset="utf-8"> Ext.onReady(function(){ Ext.define("Resultados", { extend: 'Ext.data.Model', proxy: { type: 'ajax', url : '../api/pos/buscar/', extraParams : { auth_token : Ext.util.Cookies.get("at") }, reader: { type: 'json', root: 'resultados', totalProperty: 'numero_de_resultados' } }, fields: [ {name: 'texto', mapping: 'texto'}, {name: 'id', mapping: 'id'}, {name: 'tipo', mapping: 'tipo'} ] }); dss = Ext.create('Ext.data.Store', { pageSize: 10, model: 'Resultados' }); Ext.create('Ext.panel.Panel', { renderTo: "BuscadorComponent_001", width: '88%', bodyPadding: 1, height: "26px", layout: 'anchor', items: [{ listeners :{ "select" : function(a,b,c){ if(b.length != 1) return; if(b[0].get("tipo") == "cliente"){ window.location = "clientes.ver.php?cid=" + b[0].get("id"); console.log("fue cliente"); return; } if(b[0].get("tipo") == "producto"){ window.location = "productos.ver.php?pid=" + b[0].get("id"); console.log("fue producto"); return; } console.log("no fue ninguno :("); } }, xtype: 'combo', store: dss, emptyText : "Buscar", //displayField: 'title', typeAhead: true, hideLabel: true, hideTrigger:true, listConfig: { /*Ext.view.BoundListView */ loadingText: 'Buscando...', emptyText: 'No se encontraron clientes.', // Custom rendering template for each item getInnerTpl: function() { return '<div>{tipo}<br><b>{texto}</b></div>'; } }, pageSize: 0 }] }); });//onReady </script> <div class="search"> <div id="BuscadorComponent_001"></div> </div> <?php } ?> <!-- --> <div class="clear"> </div> </div> </div> <div class="body nav"> <div class="content"> <!-- ---------------------------------------------------------------------- MENU ---------------------------------------------------------------------- --> <div id="bodyMenu" class="bodyMenu"> <div> <?php if (defined("IID") && is_file("../static/" . IID . ".jpg")) { $file = "../static/" . IID . ".jpg"; ?> <div style=" border-bottom: 1px solid white; -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, .52); -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, .52); box-shadow: 0px 0px 5px rgba(0, 0, 0, .52); width: 166px; height: 140px; background-size:166px; background-repeat: no-repeat; background-image: url(<?php echo $file; ?> )"> </div> <?php } ?> </div> <div class="toplevelnav"> <?php $this->_renderMenu(); ?> </div></div> <!-- ---------------------------------------------------------------------- CONTENIDO ---------------------------------------------------------------------- --> <div id="bodyText" class="bodyText"> <div class="header"> <div class="content"> <style> .msg .x-box-mc { font-size:14px; } #msg-div { position:absolute; left:55%; top:10px; width:300px; z-index:20000; } #msg-div .msg { border-radius: 8px; -moz-border-radius: 8px; background: #F6F6F6; border: 2px solid #ccc; margin-top: 2px; padding: 10px 15px; color: #555; } #msg-div .msg h3 { margin: 0 0 8px; font-weight: bold; font-size: 15px; } #msg-div .msg p { margin: 0; }</style> <?php } ?> <?php for ($i = $this->partial_render_n; $i < sizeof($this->components); $i++) { echo $this->components[$i]->renderCmp(); $this->partial_render_n++; } if ($this->partial_render) { $this->partial_render = false; return; } ?> </div> </div> <div class="mtm pvm uiBoxWhite topborder"> <div class="mbm"></div> <!--<abbr class="timestamp">Generado <?php echo date("r", time()); ?> </abbr>--> </div> </div> <div class="clear"></div> </div> </div> <div class="footer"> <div class="content"> <div class="copyright"> <?php if (defined("SVN_REV")) { echo "CAFFEINA POS ERP DEV BUILD: <b>2.0</b> r<b>" . SVN_REV . "</b> |"; } ?> <a href="http://caffeina.mx"> Caffeina Software</a> </div> <div class="links"> <a href="">Admin</a> <a href="">API Publica</a> <a href="pos/j/">Desarrolladores</a> </div> </div> </div> </div> <?php if (!is_null($this->GA)) { ?> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', '<?php echo $this->GA; ?> ']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> <?php } ?> <div style="" id="PosImSpace"></div> </body> </html> <?php }
public static function setUpBeforeClass() { SesionController::Iniciar(123, 1, true); }
/** * *Crea un nuevo proveedor * * @param id_tipo_proveedor int Id del tipo proveedor al que pertenece este usuario * @param password string Password del proveedor para entrar al sistema * @param nombre string Nombre del proveedor * @param codigo_proveedor string Codigo interno para identificar al proveedor * @param codigo_postal string Codigo postal de la direccion del proveedor * @param id_ciudad int Id de la ciudad de la direccion del proveedor * @param texto_extra string Referencia de la direcciond el proveedor * @param numero_interior string Numero interior de la direccion del proveedor * @param numero_exterior string Numero exterior de la direccion del proveedor * @param direccion_web string Direccion web del proveedor * @param retenciones json Retenciones que afectan a este proveedor * @param impuestos json Ids de los impuestos que afectan a este proveedor * @param dias_embarque int Dias en que el proveedor embarca ( Lunes, Martes, Miercoles, Jueves..) * @param telefono_personal string Telefono personal del proveedor * @param rfc string RFC del proveedor * @param calle string Calle de la direccion del proveedor * @param email string Correo electronico del proveedor * @param id_moneda int Id de la moneda preferente del proveedor * @param cuenta_bancaria string Cuenta bancaria del proveedor * @param activo bool Si este proveedor esta activo o no * @param representante_legal string Representante legal del proveedor * @param tiempo_entrega string Tiempo de entrega del proveedor en dias * @param limite_credito float Limite de credito que otorga el proveedor * @param dias_de_credito int Dias de credito que otorga el proveedor * @param telefono1 string Telefono 1 de la direccion del proveedor * @param telefono2 string Telefono 2 de la direccion del proveedor * @return id_proveedor int Id autogenerado por la inserci�n del nuevo proveedor. **/ public static function Nuevo($codigo_proveedor, $id_tipo_proveedor, $nombre, $password, $activo = null, $cuenta_bancaria = null, $dias_de_credito = null, $dias_embarque = true, $direcciones = null, $direccion_web = null, $email = null, $id_moneda = null, $id_tarifa_compra = null, $id_tarifa_venta = null, $impuestos = null, $limite_credito = null, $representante_legal = null, $retenciones = null, $rfc = null, $telefono_personal1 = null, $telefono_personal2 = null, $tiempo_entrega = null) { Logger::log("Creando nuevo proveedor"); //Se obtiene la informacion actual $actual = SesionController::Actual(); //Se utiliza el metodo de nuevo usuario, este se encarga de las validaciones. //El rol numero 6 es tomado como el rol de proveedor try { $proveedor = PersonalYAgentesController::NuevoUsuario($codigo_proveedor, 6, $nombre, $password, 0, $email, $cuenta_bancaria, null, null, null, null, $dias_de_credito, $dias_embarque, null, null, $direcciones, 0, null, $id_tipo_proveedor, $id_moneda, $actual["id_sucursal"], $id_tarifa_compra, $id_tarifa_venta, $impuestos, null, $limite_credito, null, $direccion_web, $representante_legal, $retenciones, $rfc, null, null, $telefono_personal1, $telefono_personal2, $tiempo_entrega); } catch (BusinessLogicException $ble) { //propagate throw $ble; } catch (Exception $e) { Logger::error("No se pudo crear al nuevo proveedor: " . $e); throw new Exception("No se pudo crear al nuevo proveedor"); } Logger::log("Proveedor creado exitosamente"); return array("id_proveedor" => $proveedor["id_usuario"]); }
public static function getCurrentUser() { if (!is_null(self::$_current_user)) { return self::$_current_user; } $auth_token = null; if (isset($_GET["auth_token"])) { $auth_token = $_GET["auth_token"]; } else { if (isset($_POST["auth_token"])) { $auth_token = $_POST["auth_token"]; } else { if (isset($_GET["at"])) { $auth_token = $_GET["at"]; } else { if (isset($_POST["at"])) { $auth_token = $_POST["at"]; } else { $sm = SessionManager::getInstance(); $auth_token = $sm->GetCookie("at"); } } } } self::$_current_user = null; if (!is_null($auth_token)) { self::$_current_user = SesionDAO::getUserByAuthToken($auth_token); } /* //there is authtoken in the POST message if( isset($_POST["at"]) && !is_null($_POST["at"]) ){ //Logger::log("post"); self::$_current_user = SesionDAO::getUserByAuthToken( $_POST["at"] ); } //there is authtoken in the GET message if(isset($_GET["at"]) && !is_null($_GET["at"])){ //Logger::log("get"); self::$_current_user = SesionDAO::getUserByAuthToken( $_GET["at"] ); } */ return self::$_current_user; }