function nombre_deudor($id_usuario, $obj) { if (!UsuarioDAO::getByPK($id_usuario)) { return ""; } return "<font title = \"Ir a detalles del usuario\" style = \"cursor:pointer;\" onClick = \"(function(){ window.location = 'clientes.ver.php?cid={$id_usuario}'; })();\" >" . UsuarioDAO::getByPK($id_usuario)->getNombre() . "</font>"; }
function nombre_receptor($id_receptor, $obj) { if ($obj["cancelado"] == 1) { return "<font title = \"Abono cancelado debido a {$obj['motivo_cancelacion']}\" style = \"color:red; cursor: help;\" >" . UsuarioDAO::getByPK($id_receptor)->getNombre() . "</font>"; } return UsuarioDAO::getByPK($id_receptor)->getNombre(); }
public function testNuevaOrden() { $s = ServiciosController::Nuevo($codigo_servicio = "testNuevoServicio-2db94458_2" . time(), $compra_en_mostrador = false, $costo_estandar = 0, $metodo_costeo = "precio", $nombre_servicio = "testNuevoServicio-2db94458_2" . time(), $activo = true, $clasificaciones = null, $control_de_existencia = null, $descripcion_servicio = null, $empresas = null, $extra_params = null, $foto_servicio = null, $garantia = null, $impuestos = null, $precio = 1542.15, $retenciones = null, $sucursales = null); $c = ClientesController::Nuevo($razon_social = "testNuevaOrden-2db9445f" . time(), $clasificacion_cliente = null, $codigo_cliente = "t" . time(), $cuenta_de_mensajeria = null, $curp = null, $denominacion_comercial = null, $descuento_general = 0, $direcciones = null, $email = null, $id_cliente_padre = null, $id_moneda = 1, $id_tarifa_compra = null, $id_tarifa_venta = null, $limite_credito = 1542.15, $password = null, $representante_legal = null, $rfc = null, $sitio_web = null, $telefono_personal1 = null, $telefono_personal2 = null); Logger::testerLog("Nueva orde de servicio (" . $c["id_cliente"] . ", " . $s["id_servicio"] . " )"); $o = ServiciosController::NuevaOrden($c["id_cliente"], $s["id_servicio"]); $this->assertInternalType("int", $o["id_orden"]); $this->assertInternalType("int", $o["id_venta"]); define("_pos_phpunit_servicios_id_cliente", $c["id_cliente"]); define("_pos_phpunit_servicios_id_servicio", $s["id_servicio"]); //ok ya que se hizo el servicio, ver que se halla creado //una venta a credito a este cliente $lista_de_ventas = VentasController::Lista(); $found = false; for ($i = 0; $i < $lista_de_ventas["numero_de_resultados"]; $i++) { if ($lista_de_ventas["resultados"][$i]["cliente"]["id_cliente"] == $c["id_cliente"]) { $found = true; } } $this->assertTrue($found); //vamos a buscar que ese cliente ya no tenga limite de credito $u = UsuarioDAO::getByPK($c["id_cliente"]); $this->assertEquals(0, $u->getLimiteCredito()); //hacerle un abono CargosYAbonosController::NuevoAbono($c["id_cliente"], 1, "efectivo", null, null, null, null, $o["id_venta"]); }
static function UserFullNameFromId($user_id) { if (is_null($u = UsuarioDAO::getByPK($user_id))) { return self::NonExistent(); } else { return $u->getNombre(); } }
private static function validarParametrosCheque($id_cheque = null, $nombre_banco = null, $monto = null, $numero = null, $expedido = null, $id_usuario = null) { //valida que el cheque exista en l abase de datos if (!is_null($id_cheque)) { if (is_null(ChequeDAO::getByPK($id_cheque))) { return "El cheque con id " . $id_cheque . " no existe"; } } //valida que el nombre del banco no tenga mas de 100 caracteres if (!is_null($nombre_banco)) { $e = self::validarString($nombre_banco, 100, "nombre de banco"); if (is_string($e)) { return $e; } } //valida que el monto este en rango if (!is_null($monto)) { $e = self::validarNumero($monto, 1.8E+200, "monto"); if (is_string($e)) { return $e; } } //valida que el numero tenag 4 y solo 4 caracteres numericos if (!is_null($numero)) { $e = self::validarString($numero, 4, "numero del cheque", 3); if (is_string($e)) { return $e; } if (preg_match('/[^0-9]/', $numero)) { return "el numero de cheque (" . $numero . ") tiene caracteres invalidos, solo se permiten de 0-9"; } } //valida el boleano expedido if (!is_null($expedido)) { $e = self::validarNumero($expedido, 1, "expedido"); if (is_string($e)) { return $e; } } //valida que el usuario exista en la base de datos y que no este inactivo if (!is_null($id_usuario)) { $usuario = UsuarioDAO::getByPK($id_usuario); if (is_null($usuario)) { return "El usuario con id: " . $id_usuario . " no existe"; } if (!$usuario->getActivo()) { return "El usuario esta inactivo y no puede expedir cheques"; } } }
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 }
/** * * * **/ private static function GetUsuarioArray($id_usuario) { $result = UsuarioDAO::getByPK($id_usuario)->asArray(); if (!is_null($result["id_direccion"])) { $result["direccion"] = DireccionDAO::getByPK($result["id_direccion"])->asArray(); unset($result["direccion"]["id_direccion"]); if (!is_null($result["direccion"]["id_ciudad"])) { $result["direccion"]["ciudad"] = CiudadDAO::getByPK($result["direccion"]["id_ciudad"])->asArray(); unset($result["direccion"]["ciudad"]["id_ciudad"]); } unset($result["direccion"]["id_ciudad"]); } if (!is_null($result["id_direccion_alterna"])) { $result["direccion_alterna"] = DireccionDAO::getByPK($result["id_direccion_alterna"])->asArray(); } if (!is_null($result["id_rol"])) { if (!is_null($r = RolDAO::getByPK($result["id_rol"]))) { $result["rol"] = $r->asArray(); } unset($result["id_rol"]); } unset($result["password"]); unset($result["id_direccion_alterna"]); unset($result["id_direccion"]); unset($result["id_usuario"]); unset($result["fecha_asignacion_rol"]); unset($result["token_recuperacion_pass"]); unset($result["id_clasificacion_proveedor"]); unset($result["id_clasificacion_cliente"]); unset($result["comision_ventas"]); unset($result["last_login"]); unset($result["consignatario"]); unset($result["salario"]); unset($result["saldo_del_ejercicio"]); unset($result["ventas_a_credito"]); unset($result["dia_de_pago"]); unset($result["mensajeria"]); unset($result["dias_de_embarque"]); unset($result["id_tarifa_compra"]); unset($result["tarifa_compra_obtenida"]); unset($result["id_tarifa_venta"]); unset($result["tarifa_venta_obtenida"]); unset($result["facturar_a_terceros"]); return $result; }
public static function NuevaDireccionParaUsuario($id_usuario) { $u = UsuarioDAO::getByPK($id_usuario); if (is_null($u)) { throw invalidDataException("el {$id_usuario} no existe"); } if (!is_null($u->getIdDireccion())) { throw new InvalidDataException("el {$id_usuario} ya tiene una direccion"); } $did = self::NuevaDireccion("", "", "", "", ""); DAO::transBegin(); $u->setIdDireccion($did); try { UsuarioDAO::save($u); } catch (Exception $e) { DAO::transRollback(); throw new Exception("No se pudo crear la direccion: " . $e); } DAO::transEnd(); }
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()); }
/** * *Hace un corte en los flujos de dinero de la sucursal. El Id de la sucursal se tomara de la sesion actual. La fehca se tomara del servidor. * * @param saldo_real float Saldo que hay actualmente en la caja * @param billetes json Ids de billetes y sus cantidades encontrados en la caja al hacer el cierre * @param id_cajero int Id del cajero en caso de que no sea este el que realiza el cierre * @return id_cierre int Id del cierre autogenerado. **/ public static function CerrarCaja($id_caja, $saldo_real, $billetes = null, $id_cajero = null) { Logger::log("Cerrando caja " . $id_caja); //Se valida la caja obtenida, que exista, que este activa y que este abierta $caja = CajaDAO::getByPK($id_caja); if (is_null($caja)) { Logger::error("La caja con id:" . $id_caja . " no existe"); throw new Exception("La caja con id:" . $id_caja . " no existe"); } if (!$caja->getActiva()) { Logger::error("La caja proporcionada no esta activa, no se puede cerrar"); throw new Exception("La caja proporcionada no esta activa, no se puede cerrar"); } if (!$caja->getAbierta()) { Logger::warn("La caja proporcionada ya esta cerrada"); throw new Exception("La caja proporcionada ya esta cerrada"); } //Se valida que el cajero exista y tenga rol de cajero if (!is_null($id_cajero)) { $cajero = UsuarioDAO::getByPK($id_cajero); if (is_null($cajero)) { Logger::error("El cajero con id: " . $id_cajero . " no existe"); throw new Exception("El cajero no existe"); } if ($cajero->getIdRol() != 3) { Logger::error("El usuario " . $id_cajero . " no tiene rol de cajero"); throw new Exception("El usuario no tiene rol de cajero"); } } //Se valida el parametro saldo real. $validar = self::validarNumero($saldo_real, 1.8E+200, "saldo real"); if (is_string($validar)) { Logger::error($validar); throw new Exception($validar); } //Se crea el registro de la tabla cierre_caja $cierre_caja = new CierreCaja(array("id_caja" => $id_caja, "id_cajero" => $id_cajero, "fecha" => time(), "saldo_real" => $saldo_real, "saldo_esperado" => $caja->getSaldo())); //Se realizan los movimientos de la caja antes de cerrarla, pues al cerrar la caja //ya no se pueden realizar movimientos sobre la misma. try { CajasController::modificarCaja($id_caja, 0, $billetes, $caja->getSaldo()); } catch (Exception $e) { throw new Exception("No se pudo modificar la caja"); } DAO::transBegin(); try { //Se guardan los cambios en caja y cierre_caja $caja->setAbierta(0); CierreCajaDAO::save($cierre_caja); CajaDAO::save($caja); //Si la caja lleva control de los billetes, se crea un registro de la tabla billete_cierre_caja //y se registran cuantos billetes fueron encontrados, cuantos sobraron y cuantos faltaron. if ($caja->getControlBilletes()) { $billetes = object_to_array($billetes); //Se regitran los billetes recibidos como cantidad encontrada. $billete_cierre_caja = new BilleteCierreCaja(array("id_cierre_caja" => $cierre_caja->getIdCierreCaja())); $billete_cierre_caja->setCantidadFaltante(0); $billete_cierre_caja->setCantidadSobrante(0); foreach ($billetes as $b) { $billete_cierre_caja->setIdBillete($b["id_billete"]); $billete_cierre_caja->setCantidadEncontrada($b["cantidad"]); BilleteCierreCajaDAO::save($billete_cierre_caja); } //Se buscan los billetes de la caja y se buscan en la tabla billete_cierre_caja //Si no se encuentra, se crea un registro nuevo //Si despues de haber modificado la caja, quedan billetes en ella, significa que //esos billetes estan faltando. //En cambio, si esos billetes tienen cantidad negativa, significa que estan sobrando $billetes_caja = BilleteCajaDAO::search(new BilleteCaja(array("id_caja" => $id_caja))); foreach ($billetes_caja as $b_c) { $billete_cierre_caja = BilleteCierreCajaDAO::getByPK($b_c->getIdBillete(), $cierre_caja->getIdCierreCaja()); if (is_null($billete_cierre_caja)) { $billete_cierre_caja = new BilleteCierreCaja(array("id_billete" => $b_c->getIdBillete(), "id_cierre_caja" => $cierre_caja->getIdCierreCaja(), "cantidad_encontrada" => 0, "cantidad_sobrante" => 0, "cantidad_faltante" => 0)); } if ($b_c->getCantidad() < 0) { $billete_cierre_caja->setCantidadSobrante($b_c->getCantidad()); } else { if ($b_c->getCantidad() > 0) { $billete_cierre_caja->setCantidadFaltante($b_c->getCantidad() * -1); } else { continue; } } //Al final pone su cantidad en cero, pues al cerrar una caja esta debe quedar vacía. $b_c->setCantidad(0); BilleteCierreCajaDAO::save($billete_cierre_caja); BilleteCajaDAO::save($b_c); } /* Fin foreach bil;etes_caja */ } /* Fin if contrik billetes */ } catch (Exception $e) { DAO::transRollback(); Logger::error("Error al cerrar la caja: " . $e); throw new Exception("Error al cerrar la caja"); } DAO::transEnd(); Logger::log("Caja cerrada exitosamente"); return array("id_cierre" => $cierre_caja->getIdCierreCaja()); }
/** * *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()); }
/** * *Una nueva orden de servicio a prestar. Este debe ser un servicio activo. Y prestable desde la sucursal desde donde se inicio la llamada. Los conceptos a llenar estan definidos por el concepto. Se guardara el id del agente que inicio la orden y el id del cliente. La fecha se tomara del servidor. * * @param id_cliente int Id del cliente que contrata el servicio * @param id_servicio int Id del servicio que se contrata * @param fecha_entrega string Fecha en que se entregara el servicio. * @param descripcion string Descripcion de la orden o el porque del servicio * @param adelanto float Adelanto de la orden * @return id_orden int Id de la orden que se creo. **/ public static function NuevaOrden($id_cliente, $id_servicio, $adelanto = null, $cliente_reporta = null, $condiciones_de_recepcion = null, $descripcion = "", $extra_params = null, $fecha_entrega = "", $fotografia = null, $id_usuario_asignado = null, $precio = null) { Logger::log("Creando nueva orden de servicio..."); Logger::log(" id_servicio=" . $id_servicio); Logger::log(" id_cliente =" . $id_cliente); //Se obtiene al usuario de la sesion actual $s = SesionController::Actual(); if (is_null($s)) { Logger::error("No se ha podido obtener al usuario de la sesion. Ya inicio sesion?"); throw new AccessDeniedException("No se ha podido obtener al usuario de la sesion."); } $id_usuario = $s["id_usuario"]; $cliente = UsuarioDAO::getByPK($id_cliente); $saldo_cliente = $cliente->getSaldoDelEjercicio(); //se trae el monto que le resta por disponer de su limite de credito /* if( $saldo_cliente < $precio ) throw new InvalidDataException("El saldo del cliente es insuficiente ($ {$saldo_cliente})"); */ //Valida que los datos sean correctos $validar = self::validarParametrosOrdenDeServicio(null, $id_servicio, $id_cliente, $descripcion, null, $adelanto); //Si no se recibe adelanto se toma como cero if (is_null($adelanto)) { $adelanto = 0; } else { if ($adelanto < 0) { throw new InvalidDataException("No es un valor de adelanto valido"); } } if ($adelanto > $precio) { throw new InvalidDataException("El monto del adelanto rebaza el monto del servicio"); } $servicio = ServicioDAO::getByPK($id_servicio); if (is_null($servicio)) { throw new InvalidDataException("Este servicio no existe"); } $subtotal = 0; if ($servicio->getMetodoCosteo() == "variable") { if (is_null($precio)) { throw new InvalidDataException("Este servicio es de precio variable y no se envio el precio"); } if ($precio < 0) { throw new InvalidDataException("{$precio} no es un precio valido, es menor a 0"); } $subtotal = $precio; } else { $subtotal = $servicio->getPrecio(); if (is_null($subtotal)) { Logger::error("el precio de este servicio esta mal!"); $subtotal = 0; } } /* //Figu: al llegar a este punto si tiene el saldo de la venta, pero se valida aun asi que su limite de credito cubra ese subtotal //esto por si en algun momento se actualiza el limite de credito del cliente (que el admin del sis le decremente su limite por cualquier razon) if(UsuarioDAO::getByPK($id_cliente)->getLimiteCredito() < $subtotal){ throw new BusinessLogicException("El limite de credito no cubre este monto"); } */ //Se inicializa el registro de orden de servicio $orden_de_servicio = new OrdenDeServicio(array("id_servicio" => $id_servicio, "id_usuario_venta" => $id_cliente, "id_usuario" => $id_usuario, "fecha_orden" => time(), "fecha_entrega" => $fecha_entrega, "activa" => 1, "cancelada" => 0, "descripcion" => $descripcion, "adelanto" => $adelanto, "precio" => $subtotal)); //ok, ya tengo el servicio, vamos a ver si necesito parametros extra if (!is_null($servicio->getExtraParams())) { Logger::log("El servicio require parametros extra."); //si se necesitan, vamos a ver cuales son, $extra_params_sent = $extra_params; $extra_params_required = json_decode($servicio->getExtraParams()); //no se enviaron los parametros extra? if (is_null($extra_params_sent)) { Logger::warn("no se enviaron parametros extra"); } foreach ($extra_params_required as $epr) { Logger::log("Extraparam:" . $epr->desc); } $orden_de_servicio->setExtraParams(json_encode($extra_params)); } DAO::transBegin(); try { Logger::log("Insertando la orden de servicio...."); $orden = OrdenDeServicioDAO::save($orden_de_servicio); } catch (Exception $e) { DAO::transRollback(); Logger::error($e->getMessage()); throw new InvalidDatabaseOperationException("No se pudo crear la nueva orden de servicio"); } $s = SesionController::Actual(); //proceder a insertar venta a credito para este servicio /* */ DAO::transEnd(); Logger::log("Orden de servicio creada exitosamente:"); Logger::log("\torden de servicio=" . $orden_de_servicio->getIdOrdenDeServicio()); //ok, ya se hizo correctamente, vamos a ver si le enviamos correo al cliente if (!is_null($cliente->getCorreoElectronico())) { Logger::log("enviando correo a " . $cliente->getCorreoElectronico()); $servicio = ServicioDAO::getByPK($id_servicio); $cuerpo = "Estimado " . $cliente->getNombre() . "\n\n" . "Le escribimos para informale que su orden de servcio " . "numero " . $orden_de_servicio->getIdOrdenDeServicio() . " " . "referente a " . $servicio->getNombreServicio() . " " . "esta siendo procesada y usted puede revisar su estatus en " . "cualquier momento mediante nuestra pagina web en: \n\n" . "http://pos2.labs2.caffeina.mx/front_ends/" . INSTANCE_TOKEN . "/?from=email"; $destinatario = $cliente->getCorreoElectronico(); $titulo = "Su orden de servicio "; POSController::EnviarMail($cuerpo, $destinatario, $titulo); } return array("id_orden" => (int) $orden_de_servicio->getIdOrdenDeServicio()); }
<?php define("BYPASS_INSTANCE_CHECK", false); require_once "../../../server/bootstrap.php"; $page = new GerenciaComponentPage(); // // Parametros necesarios // $page->requireParam("uid", "GET", "Este usuario no existe."); $este_usuario = UsuarioDAO::getByPK($_GET["uid"]); $esta_direccion = DireccionDAO::getByPK($este_usuario->getIdDireccion()); // // Titulo de la pagina // $page->addComponent(new TitleComponent("Editar usuario " . $este_usuario->getNombre(), 2)); // // Forma de usuario // if (is_null($esta_direccion)) { $esta_direccion = new Direccion(); } $este_usuario->setPassword(""); $form = new DAOFormComponent($este_usuario); $form->hideField(array("id_usuario", "id_direccion", "id_direccion_alterna", "id_sucursal", "fecha_asignacion_rol", "fecha_alta", "fecha_baja", "activo", "last_login", "consignatario", "id_clasificacion_cliente", "id_clasificacion_proveedor", "tarifa_venta_obtenida", "tarifa_compra_obtenida", "id_tarifa_compra", "id_tarifa_venta", "saldo_del_ejercicio", "intereses_moratorios", "representante_legal", "pagina_web", "mensajeria", "denominacion_comercial", "dias_de_credito", "facturar_a_terceros", "limite_credito", "token_recuperacion_pass", "tiempo_entrega", "ventas_a_credito", "descuento", "dias_de_embarque", "cuenta_de_mensajeria")); $form->setCaption("rfc", "RFC"); $form->setCaption("id_moneda", "Moneda default"); $form->setCaption("id_rol", "Rol"); $form->setHelp("id_rol", "Rol"); $form->sendHidden("id_usuario"); $form->addApiCall("api/personal/usuario/editar/"); $form->onApiCallSuccessRedirect("personal.usuario.ver.php?uid=" . $_GET["uid"]);
/** * Crea un pdf con el estado de cuenta de el cliente especificado * @param Array $args, $args['id_cliente'=>12[,'tipo_venta'=> 'credito | contado | saldo'] ], por default obtiene todas las compras del cliente */ public static function imprimirEstadoCuentaCliente($args) { //verificamos que se haya especificado el id del cliente if (!isset($args['id_cliente'])) { Logger::log("Error al obtener el estado de cuenta, no se ha especificado un cliente."); die('{"success": false, "reason": "Error al obtener el estado de cuenta, no se ha especificado un cliente."}'); } //verificamos que el cliente exista if (!($cliente = ClienteDAO::getByPK($args['id_cliente']))) { Logger::log("Error al obtener el estado de cuenta, no se tiene registro del cliente {$args['id_cliente']}."); die('{"success": false, "reason": "Error al obtener el estado de cuenta, no se tiene registro del cliente ' . $args['id_cliente'] . '"}'); } //obtenemos los datos del emisor $estado_cuenta = estadoCuentaCliente($args); //buscar los datos del emisor if (!($emisor = PosConfigDAO::getByPK('emisor'))) { Logger::log("no encuentro los datos del emisor"); die("no encuentro los datos del emisor"); } $emisor = json_decode($emisor->getValue())->emisor; $sucursal = SucursalDAO::getByPK($_SESSION['sucursal']); if (!$sucursal) { die("Sucursal invalida"); } include_once 'librerias/ezpdf/class.pdf.php'; include_once 'librerias/ezpdf/class.ezpdf.php'; $pdf = new Cezpdf(); $pdf->selectFont('../server/librerias/ezpdf/fonts/Helvetica.afm'); //margenes de un centimetro para toda la pagina $pdf->ezSetMargins(1, 1, 1, 1); /* * LOGO */ if (!($logo = PosConfigDAO::getByPK('url_logo'))) { Logger::log("Verifique la configuracion del pos_config, no se encontro el camṕo 'url_logo'"); die("Verifique la configuracion del POS, no se encontro el url del logo"); } //addJpegFromFile(imgFileName,x,y,w,[h]) //detectamos el tipo de imagen del logo if (substr($logo->getValue(), -3) == "jpg" || substr($logo->getValue(), -3) == "JPG" || substr($logo->getValue(), -4) == "jpeg" || substr($logo->getValue(), -4) == "JPEG") { $pdf->addJpegFromFile($logo->getValue(), puntos_cm(2), puntos_cm(25.5), puntos_cm(3.5)); } elseif (substr($logo->getValue(), -3) == "png" || substr($logo->getValue(), -3) == "PNG") { $pdf->addPngFromFile($logo->getValue(), puntos_cm(2), puntos_cm(25.5), puntos_cm(3.5)); } else { Logger::log("Verifique la configuracion del pos_config, la extension de la imagen del logo no es compatible"); die("La extension de la imagen usada para el logo del negocio no es valida."); } /* * ************************ * ENCABEZADO * ************************* */ $e = "<b>" . self::readableText($emisor->nombre) . "</b>\n"; $e .= formatAddress($emisor); $e .= "RFC: " . $emisor->rfc . "\n\n"; //datos de la sucursal $e .= "<b>Lugar de expedicion</b>\n"; $e .= self::readableText($sucursal->getDescripcion()) . "\n"; $e .= formatAddress($sucursal); $datos = array(array("emisor" => $e)); $pdf->ezSetY(puntos_cm(28.6)); $opciones_tabla = array(); $opciones_tabla['showLines'] = 0; $opciones_tabla['showHeadings'] = 0; $opciones_tabla['shaded'] = 0; $opciones_tabla['fontSize'] = 8; $opciones_tabla['xOrientation'] = 'right'; $opciones_tabla['xPos'] = puntos_cm(7.3); $opciones_tabla['width'] = puntos_cm(11); $opciones_tabla['textCol'] = array(0, 0, 0); $opciones_tabla['titleFontSize'] = 12; $opciones_tabla['rowGap'] = 3; $opciones_tabla['colGap'] = 3; $pdf->ezTable($datos, "", "", $opciones_tabla); $cajero = UsuarioDAO::getByPK($_SESSION['userid'])->getNombre(); $datos = array(array("col" => "<b>Cajero</b>"), array("col" => self::readableText($cajero)), array("col" => "<b>Cliente</b>"), array("col" => self::readableText($cliente->getRazonSocial())), array("col" => "<b>Limite de Credito</b>"), array("col" => FormatMoney($estado_cuenta->limite_credito, DONT_USE_HTML)), array("col" => "<b>Saldo</b>"), array("col" => FormatMoney($estado_cuenta->saldo, DONT_USE_HTML))); $pdf->ezSetY(puntos_cm(28.8)); $opciones_tabla['xPos'] = puntos_cm(12.2); $opciones_tabla['width'] = puntos_cm(6); $opciones_tabla['showLines'] = 0; $opciones_tabla['shaded'] = 2; $opciones_tabla['shadeCol'] = array(1, 1, 1); //$opciones_tabla['shadeCol2'] = array(0.054901961, 0.756862745, 0.196078431); $opciones_tabla['shadeCol2'] = array(0.8984375, 0.95703125, 0.99609375); $pdf->ezTable($datos, "", "", $opciones_tabla); //roundRect($pdf, puntos_cm(12.2), puntos_cm(28.8), puntos_cm(6), puntos_cm(4.25)); /** * ESTADO DE CUENTA */ $elementos = array(array('id_venta' => 'Venta', 'fecha' => 'Fecha', 'sucursal' => 'Sucursal', 'cajero' => 'Cajero', 'tipo_venta' => 'Tipo', 'tipo_pago' => 'Pago', 'total' => 'Total', 'pagado' => 'Pagado', 'saldo' => 'Saldo')); foreach ($estado_cuenta->array_ventas as $venta) { $array_venta = array(); $array_venta['id_venta'] = $venta['id_venta']; $array_venta['fecha'] = $venta['fecha']; $array_venta['sucursal'] = self::readableText($venta['sucursal']); $array_venta['cajero'] = self::readableText($venta['cajero']); $array_venta['cancelada'] = self::readableText($venta['cancelada']); $array_venta['tipo_venta'] = self::readableText($venta['tipo_venta']); $array_venta['tipo_pago'] = self::readableText($venta['tipo_pago']); $array_venta['total'] = FormatMoney($venta['total'], DONT_USE_HTML); $array_venta['pagado'] = FormatMoney($venta['pagado'], DONT_USE_HTML); $array_venta['saldo'] = FormatMoney($venta['saldo'], DONT_USE_HTML); array_push($elementos, $array_venta); } $pdf->ezText("", 8, array('justification' => 'center')); $pdf->ezSetY(puntos_cm(24)); $opciones_tabla['xPos'] = puntos_cm(2); $opciones_tabla['width'] = puntos_cm(16.2); $pdf->ezTable($elementos, "", "Estado de Cuenta", $opciones_tabla); //roundRect($pdf, puntos_cm(2), puntos_cm(24.3), puntos_cm(16.2), puntos_cm(3.2)); /* * ************************ * notas de abajo * ************************* */ $pdf->setLineStyle(1); $pdf->setStrokeColor(0.3359375, 0.578125, 0.89453125); $pdf->line(puntos_cm(2), puntos_cm(1.3), puntos_cm(18.2), puntos_cm(1.3)); $pdf->addText(puntos_cm(2), puntos_cm(1.0), 7, "Fecha de impresion: " . date("d/m/y") . " " . date("H:i:s")); //addJpegFromFile(imgFileName,x,y,w,[h]) //$pdf->addJpegFromFile("../www/media/logo_simbolo.jpg", puntos_cm(15.9), puntos_cm(.25), 25); $pdf->addText(puntos_cm(16.7), puntos_cm(0.6), 8, "caffeina.mx"); $pdf->ezStream(); }
// // Forma de producto // $esta_orden->setFechaOrden(FormatTime($esta_orden->getFechaOrden())); $a = $esta_orden->getIdUsuarioAsignado(); $asignado = UsuarioDAO::getByPK($a); if (!is_null($asignado)) { $esta_orden->setIdUsuarioAsignado($asignado->getNombre()); } else { $esta_orden->setIdUsuarioAsignado("<img src='../../media/iconos/user_delete.png'> Nadie esta asignado"); } //$form->createComboBoxJoin("id_servicio", "nombre_servicio", ServicioDAO::getAll(), $esta_orden->getIdServicio()); //$form->createComboBoxJoin("id_usuario", "nombre", UsuarioDAO::getAll(), $esta_orden->getIdUsuario()); $servicio = ServicioDAO::getByPK($esta_orden->getIdServicio()); $esta_orden->setIdServicio($servicio->getNombreServicio()); $agente = UsuarioDAO::getByPK($esta_orden->getIdUsuario()); if (!is_null($agente)) { $esta_orden->setIdUsuario($agente->getNombre()); } $esta_orden->setPrecio(FormatMoney($esta_orden->getPrecio())); $form = new DAOFormComponent($esta_orden); $form->setEditable(false); $form->hideField(array("id_orden_de_servicio", "id_usuario_venta", "extra_params", "motivo_cancelacion", "fecha_entrega", "cancelada", "adelanto", "activa", "descripcion")); $form->setCaption("id_usuario", "Agente que realizo"); $form->setCaption("id_usuario_asignado", "Agente asignado"); $form->setCaption("id_servicio", "Servicio"); //$form->createComboBoxJoinDistintName("id_usuario_venta", "id_usuario", "nombre", UsuarioDAO::getAll(), $esta_orden->getIdUsuarioVenta()); $page->addComponent($form); $eP = $esta_orden->getExtraParams(); if (!is_null($eP)) { $ePObj = json_decode($eP);
function funcion_usuario($id_usuario) { if (is_null($u = UsuarioDAO::getByPK($id_usuario))) { return "ERROR"; } return $u->getNombre(); }
/** * *Iniciar una orden de consignaci?n. La fecha sera tomada del servidor. * * @param productos json Objeto que contendra los ids de los productos que se daran a consignacion a ese cliente con sus cantidades. Se incluira el id del almacen del cual seran tomados para determinar a que empresa pertenece esta consignacion * @param id_consignatario int Id del cliente al que se le hace la consignacion * @return id_consignacion int Id de la consignacion autogenerado por la insercion. **/ public static function Nueva($fecha_termino, $folio, $id_consignatario, $productos, $tipo_consignacion, $fecha_envio_programada = null) { Logger::log("Creando nueva consignacion"); //Se valida al consignatario $e = self::validarConsignatario($id_consignatario); if (is_string($e)) { Logger::error($e); throw new Exception($e); } $consignatario = UsuarioDAO::getByPK($id_consignatario); //Se obtiene al usuario de la sesion actual $id_usuario = LoginController::getCurrentUser(); if (is_null($id_usuario)) { 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?"); } //Valida el parametro tipo de consignacion if ($tipo_consignacion != "credito" && $tipo_consignacion != "contado") { Logger::error("El parametro tipo de consignacion (" . $tipo_consignacion . ") es invalido"); throw new Exception("El parametro tipo de consignacion (" . $tipo_consignacion . ") es invalido"); } //Si no se recibio fecha de envio, se toma la fecha actual if (is_null($fecha_envio_programada)) { $fecha_envio_programada = date("Y-m-d H:i:s"); } $consignacion = new Consignacion(array("id_cliente" => $id_consignatario, "id_usuario" => $id_usuario, "fecha_creacion" => date("Y-m-d H:i:s"), "activa" => 1, "cancelada" => 0, "folio" => $folio, "fecha_termino" => $fecha_termino, "saldo" => 0, "tipo_consignacion" => $tipo_consignacion)); //Se agrupan los productos que vienen del mismo almacen en subarreglos para //programar un solo traspaso por almacen. $productos_por_almacen = array(); $num_productos = count($productos); for ($i = 0; $i < $num_productos; $i++) { if ($productos[i] == null) { continue; } $temp = array(); array_push($temp, $productos[i]); for ($j = $i + 1; $j < $num_productos; $j++) { if ($productos[$i]["id_almacen"] == $productos[$j]["id_almacen"]) { array_push($temp, $productos[$j]); $productos[$j] = null; } } $productos[$i] = null; array_push($productos_por_almacen, $temp); } DAO::transBegin(); try { ConsignacionDAO::save($consignacion); $consignacion_producto = new ConsignacionProducto(array("id_consignacion" => $consignacion->getIdConsignacion())); foreach ($productos_por_almacen as $producto_por_almacen) { //Se validan los parametros obtenidos del arreglo de productos foreach ($producto_por_almacen as $producto) { $validar = self::validarConsignacionProducto($producto["id_producto"], $producto["id_unidad"], $producto["cantidad"], $producto["impuesto"], $producto["descuento"], $producto["retencion"], $producto["precio"]); if (is_string($validar)) { throw new Exception($validar); } $validar = self::validarAlmacen($producto["id_almacen"]); if (is_string($validar)) { throw new Eception($validar); } } /* * El consignatario puede contar con algún o ningún almacen de tipo consignacion, * pero solo tendra uno por empresa, esto quiere decir que todos los productos recibidos * seran repartidos en estos almacenes de acuerdo a la empresa a la que pertenece * el almacen de donde son extraidos. * * Si el consignatario no cuenta con un almacen para la empresa de ese producto, se creara uno * nuevo y se realizara la transferencia. */ //Se obtiene el id de la empresa de la cual vienen los productos $id_empresa = AlmacenDAO::getByPK($producto_por_almacen[0]["id_almacen"])->getIdEmpresa(); //Se busca el almacen de consignacion de este cliente para esta empresa $almacen = null; $almacenes = AlmacenDAO::search(new Almacen(array("id_empresa" => $id_empresa, "nombre" => $consignatario->getCodigoUsuario(), "id_sucursal" => 0))); //Si no existe, se crea if (empty($almacenes)) { $almacen = new Almacen(array("id_sucursal" => 0, "id_empresa" => $id_empresa, "id_tipo_almacen" => 2, "nombre" => $consignatario->getCodigoUsuario(), "descripcion" => "Almacen de consignacion del usuario " . $consignatario->getNombre() . " con clave " . $consignatario->getCodigoUsuario() . " para la empresa " . $id_empresa, "activo" => 1)); AlmacenDAO::save($almacen); } else { $almacen = $almacenes[0]; } //Se prepara el arreglo de productos para crear el traspaso de un almacen a otro $productos_para_traspaso = array(); foreach ($producto_por_almacen as $producto) { $p = array("id_producto" => $producto["id_producto"], "id_unidad" => $producto["id_unidad"], "cantidad" => $producto["cantidad"]); array_push($productos_para_traspaso, $p); } //Se programa el traspaso del almacen de donde se tomaron estos productos al almacen de consignacion SucursalesController::ProgramarTraspasoAlmacen($almacen->getIdAlmacen(), $producto_por_almacen[0]["id_almacen"], $fecha_envio_programada, $productos_para_traspaso); } } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la nueva consignacion: " . $e); throw new Exception("No se pudo crear la nueva consignacion"); } DAO::transEnd(); Logger::log("Consignacion creada exitosamente"); return array("id_consignacion" => $consignacion->getIdConsignacion()); }
public static function saldoCliente($id_cliente) { global $conn; $limite_credito = UsuarioDAO::getByPK($id_cliente)->getLimiteCredito(); $sql = "SELECT SUM(venta.saldo) as saldo FROM venta WHERE venta.id_comprador_venta = {$id_cliente} AND venta.saldo > 0;"; $rs = $conn->GetRow($sql); if (count($rs) === 0) { return $limite_credito; } if ($rs['saldo'] == null) { return $limite_credito; } return $limite_credito - $rs['saldo']; }
function funcion_usuario_venta($usuario_venta) { return UsuarioDAO::getByPK($usuario_venta) ? UsuarioDAO::getByPK($usuario_venta)->getNombre() : "<img src='../../media/iconos/user_delete.png'> Nadie esta asignado"; }
<?php define("BYPASS_INSTANCE_CHECK", false); require_once "../../../server//bootstrap.php"; $page = new GerenciaComponentPage(); // // Parametros necesarios // $page->requireParam("cid", "GET", "Este cliente no existe."); $este_cliente = UsuarioDAO::getByPK($_GET["cid"]); $esta_direccion = DireccionDAO::getByPK($este_cliente->getIdDireccion()); //titulos $page->addComponent(new TitleComponent("Editar a " . $este_cliente->getNombre())); //forma de nuevo cliente if (is_null($esta_direccion)) { $esta_direccion = new Direccion(); } $form = new DAOFormComponent(array($este_cliente, $esta_direccion)); $form->hideField(array("id_usuario", "id_direccion", "id_direccion_alterna", "id_sucursal", "id_rol", "id_clasificacion_proveedor", "fecha_asignacion_rol", "comision_ventas", "fecha_alta", "fecha_baja", "activo", "last_login", "salario", "saldo_del_ejercicio", "dia_de_pago", "dias_de_embarque", "id_direccion", "ultima_modificacion", "id_usuario_ultima_modificacion", "consignatario", "facturar_a_terceros", "dia_de_revision", "tiempo_entrega", "ventas_a_credito", "intereses_moratorios", "cuenta_bancaria", "dias_de_credito", "limite_credito")); $form->renameField(array("id_usuario" => "id_cliente")); $form->sendHidden("id_cliente"); $form->setValueField("password", ""); $form->createComboBoxJoin("id_moneda", "nombre", MonedaDAO::search(new Moneda(array("activa" => 1))), $este_cliente->getIdMoneda()); $form->createComboBoxJoin("id_clasificacion_cliente", "nombre", ClasificacionClienteDAO::getAll(), $este_cliente->getIdClasificacionCliente()); $form->addApiCall("api/cliente/editar_perfil/"); $form->onApiCallSuccessRedirect("clientes.lista.php"); $form->createComboBoxJoin("id_ciudad", "nombre", CiudadDAO::getAll(), $esta_direccion->getIdCiudad()); $form->renameField(array("nombre" => "razon_social", "codigo_usuario" => "codigo_cliente", "telefono" => "telefono1", "correo_electronico" => "email", "id_clasificacion_cliente" => "clasificacion_cliente", "id_moneda" => "moneda_del_cliente", "pagina_web" => "direccion_web", "id_ciudad" => "municipio", "referencia" => "texto_extra")); $page->addComponent($form); $page->render();
$menu = new MenuComponent(); $menu->addItem("Editar Direccion", "personal.editar.direccion.php?uid=" . $este_usuario->getIdUsuario() . "&did=" . $este_usuario->getIdDireccion()); $page->addComponent($menu); $direccion = $este_usuario->getIdDireccion(); $direccionObj = DireccionDAO::getByPK($direccion); if (is_null($direccionObj)) { } else { $ciudad = CiudadDAO::getByPK($direccionObj->getIdCiudad()); if (null === $ciudad) { $ciudad = new Ciudad(); } $page->addComponent(new FreeHtmlComponent("<div id=\"map_canvas\"></div>")); $page->addComponent(new FreeHtmlComponent("<script>startMap(\"" . $direccionObj->getCalle() . " " . $direccionObj->getNumeroExterior() . ", " . $direccionObj->getColonia() . ", " . $ciudad->getNombre() . "\");</Script>")); } if (!is_null($direccionObj)) { $usr_ultima = UsuarioDAO::getByPK($direccionObj->getIdUsuarioUltimaModificacion()); if (!is_null($usr_ultima)) { $direccionObj->setIdUsuarioUltimaModificacion($usr_ultima->getNombre()); } $dform = new DAOFormComponent($direccionObj); $dform->setEditable(false); $dform->hideField(array("id_direccion", "id_usuario_ultima_modificacion", "ultima_modificacion")); $dform->createComboBoxJoin("id_ciudad", "nombre", CiudadDAO::getAll(), $direccionObj->getIdCiudad()); $page->addComponent($dform); } /* if (!is_null($este_usuario->getIdDireccion())) { $page->addComponent(new TitleComponent("Direccion")); $form = new DAOFormComponent($esta_direccion); $form->hideField(array(
function funcion_comprador($id_comprador) { return UsuarioDAO::getByPK($id_comprador) ? UsuarioDAO::getByPK($id_comprador)->getNombre() : "-----"; }
<?php define("BYPASS_INSTANCE_CHECK", false); require_once "../../../server/bootstrap.php"; $page = new GerenciaComponentPage(); $page->requireParam("pid", "GET", "Este proveedor no existe."); $este_proveedor = UsuarioDAO::getByPK($_GET["pid"]); $esta_direccion = DireccionDAO::getByPK($este_proveedor->getIdDireccion()); $page->addComponent(new TitleComponent("Editar proveedor: " . $este_proveedor->getNombre())); //forma de nuevo cliente if (is_null($esta_direccion)) { $esta_direccion = new Direccion(); } $form = new DAOFormComponent(array($este_proveedor, $esta_direccion)); $form->hideField(array("id_usuario", "id_direccion", "id_direccion_alterna", "id_rol", "id_sucursal", "id_clasificacion_cliente", "fecha_asignacion_rol", "comision_ventas", "fecha_alta", "fecha_baja", "last_login", "salario", "id_direccion", "ultima_modificacion", "id_usuario_ultima_modificacion", "consignatario", "intereses_moratorios", "mensajeria", "cuenta_de_mensajeria", "denominacion_comercial", "facturar_a_terceros", "dia_de_revision", "dia_de_pago", "ventas_a_credito", "saldo_del_ejercicio", "codigo_usuario", "id_clasificacion_proveedor")); $form->createComboBoxJoin("id_moneda", "nombre", MonedaDAO::search(new Moneda(array("activa" => 1))), $este_proveedor->getIdMoneda()); $clasificaciones = ContactosController::BuscarCategoria(); $clasificaciones = $clasificaciones['categorias']; foreach ($clasificaciones as $key => $clasificacion) { $clasificacion->caption = $clasificacion->nombre; $clasificaciones[$key] = $clasificacion->asArray(); } $form->createComboBoxJoin('id_categoria_contacto', 'nombre', $clasificaciones); $form->createComboBoxJoin("id_ciudad", "nombre", CiudadDAO::getAll(), $esta_direccion->getIdCiudad()); $form->renameField(array("nombre" => "razon_social", "telefono" => "telefono1", "correo_electronico" => "email", "id_categoria_contacto" => "id_tipo_proveedor", "pagina_web" => "direccion_web", "referencia" => "texto_extra", "id_usuario" => "id_proveedor")); $form->setValueField("password", ""); $form->addApiCall("api/proveedor/editar/", "GET"); $form->onApiCallSuccessRedirect("proveedores.lista.php"); $form->sendHidden("id_proveedor"); $page->addComponent($form); $page->render();
/** * *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); }
function funcion_cajero($id_cajero) { return UsuarioDAO::getByPK($id_cajero) ? UsuarioDAO::getByPK($id_cajero)->getNombre() : "------"; }
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; case 3001: $c = new stdClass(); $c->ordenesActivas = array(); foreach (OrdenDeServicioDAO::search(new OrdenDeServicio(array("activa" => 1))) as $servicio) { array_push($c->ordenesActivas, array("id_orden_de_servicio" => $servicio->getIdOrdenDeServicio(), "nombre_servicio" => ServicioDAO::getByPK($servicio->getIdServicio())->getNombreServicio(), "nombre_cliente" => UsuarioDAO::getByPK($servicio->getIdUsuarioVenta())->getNombre())); } echo json_encode($c); break; break; } return;
/** * *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()); }
Logger::log("El uid=" . $_GET["cid"] . " no tiene direccion. Insertando."); DireccionController::NuevaDireccionParaUsuario($_GET["cid"]); //recargar el objeto de cliente $this_client = UsuarioDAO::getByPK($_GET["cid"]); } $esta_dir = DireccionDAO::getByPK($this_client->getIdDireccion()); if (is_null($esta_dir)) { //esta definida pero el registro no existe por alguna razon Logger::error("user " . $_GET["cid"] . " se supone que tiene id direccion = " . $this_client->getIdDireccion() . " , pero esta en null ..."); DAO::transBegin(); $this_client->setIdDireccion(NULL); try { UsuarioDAO::save($this_client); DireccionController::NuevaDireccionParaUsuario($this_client->getIdUsuario()); //recargar el objeto de cliente $this_client = UsuarioDAO::getByPK($_GET["cid"]); } catch (Exception $e) { DAO::transRollback(); throw new Exception("No se pudo crear la direccion: " . $e); } DAO::transEnd(); } $esta_dir = DireccionDAO::getByPK($this_client->getIdDireccion()); //titulos $page->addComponent(new TitleComponent("Editar direccion: " . $esta_dir->getColonia())); //forma de nuevo cliente $form = new DAOFormComponent($esta_dir); $form->hideField(array("id_direccion", "id_usuario_ultima_modificacion", "ultima_modificacion")); $form->sendHidden("id_direccion"); $form->createComboBoxJoin("id_ciudad", "nombre", CiudadDAO::getAll(), $esta_dir->getIdCiudad()); $form->setCaption("id_ciudad", "Ciudad");
<?php define("BYPASS_INSTANCE_CHECK", false); require_once "../../../server/bootstrap.php"; $page = new GerenciaComponentPage(); // // Parametros necesarios // $page->requireParam("oid", "GET", "Esta orden de servicio no existe."); $esta_orden = OrdenDeServicioDAO::getByPK($_GET["oid"]); if (!$esta_orden->getActiva()) { $page->addComponent(new TitleComponent("Esta orden ya ha sido terminada.")); $page->render(); exit; } $customer = UsuarioDAO::getByPK($esta_orden->getIdUsuarioVenta()); $link_to_customer = "<a href='clientes.ver.php?cid=" . $esta_orden->getIdUsuarioVenta() . "'>" . $customer->getNombre() . "</a>"; $page->addComponent(new TitleComponent("Terminar orden de servicio " . $_GET["oid"] . " para " . $link_to_customer, 2)); //desactivarla $esta_orden->setActiva(0); $form = new DAOFormComponent($esta_orden); $form->addField("id_orden", "id_orden", "text", $_GET["oid"]); $form->setEditable(true); $form->hideField(array("id_usuario_venta", "extra_params", "motivo_cancelacion", "id_orden_de_servicio", "fecha_entrega", "cancelada", "adelanto", "activa", "id_usuario", "descripcion", "fecha_orden", "id_servicio", "id_usuario_asignado")); $form->setCaption("precio", "Precio final"); $form->sendHidden(array("id_orden", "activa")); $form->addApiCall("api/servicios/orden/terminar", "POST"); //$form->onApiCallSuccessRedirect("servicios.detalle.orden.php?oid=" . $_GET["oid"]); //$page->addComponent($form); $page->partialRender(); ?>
Logger::log("El uid=" . $_GET["uid"] . " no tiene direccion. Insertando."); DireccionController::NuevaDireccionParaUsuario($_GET["uid"]); //recargar el objeto de cliente $this_personal = UsuarioDAO::getByPK($_GET["uid"]); } $esta_dir = DireccionDAO::getByPK($this_personal->getIdDireccion()); if (is_null($esta_dir)) { //esta definida pero el registro no existe por alguna razon Logger::error("user " . $_GET["uid"] . " se supone que tiene id direccion = " . $this_personal->getIdDireccion() . " , pero esta en null ..."); DAO::transBegin(); $this_personal->setIdDireccion(NULL); try { UsuarioDAO::save($this_personal); DireccionController::NuevaDireccionParaUsuario($this_personal->getIdUsuario()); //recargar el objeto de cliente $this_personal = UsuarioDAO::getByPK($_GET["uid"]); } catch (Exception $e) { DAO::transRollback(); throw new Exception("No se pudo crear la direccion: " . $e); } DAO::transEnd(); } $esta_dir = DireccionDAO::getByPK($this_personal->getIdDireccion()); //titulos $page->addComponent(new TitleComponent("Editar direccion: " . $esta_dir->getColonia())); //forma de nuevo usuario $form = new DAOFormComponent($esta_dir); $form->hideField(array("id_direccion", "id_usuario_ultima_modificacion", "ultima_modificacion")); $form->sendHidden("id_direccion"); $form->createComboBoxJoin("id_ciudad", "nombre", CiudadDAO::getAll(), $esta_dir->getIdCiudad()); $form->setCaption("id_ciudad", "Ciudad");