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>";
}
Пример #2
0
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();
}
Пример #3
0
 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"]);
 }
Пример #4
0
 static function UserFullNameFromId($user_id)
 {
     if (is_null($u = UsuarioDAO::getByPK($user_id))) {
         return self::NonExistent();
     } else {
         return $u->getNombre();
     }
 }
Пример #5
0
 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";
         }
     }
 }
Пример #6
0
    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 
    }
Пример #7
0
 /**
  *
  *
  *
  **/
 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;
 }
Пример #8
0
 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();
 }
Пример #9
0
 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());
 }
Пример #10
0
 /**
  *
  *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());
 }
Пример #11
0
 /**
  *
  *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());
 }
Пример #12
0
 /**
  *
  *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());
 }
Пример #13
0
<?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"]);
Пример #14
0
 /**
  * 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();
 }
Пример #15
0
//
// 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);
Пример #16
0
function funcion_usuario($id_usuario)
{
    if (is_null($u = UsuarioDAO::getByPK($id_usuario))) {
        return "ERROR";
    }
    return $u->getNombre();
}
Пример #17
0
 /**
  *
  *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());
 }
Пример #18
0
 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'];
 }
Пример #19
0
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";
}
Пример #20
0
<?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();
Пример #21
0
$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(
Пример #22
0
function funcion_comprador($id_comprador)
{
    return UsuarioDAO::getByPK($id_comprador) ? UsuarioDAO::getByPK($id_comprador)->getNombre() : "-----";
}
Пример #23
0
<?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();
Пример #24
0
 /**
  *
  *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);
 }
Пример #25
0
function funcion_cajero($id_cajero)
{
    return UsuarioDAO::getByPK($id_cajero) ? UsuarioDAO::getByPK($id_cajero)->getNombre() : "------";
}
Пример #26
0
        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;
Пример #27
0
 /**
  *
  *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());
 }
Пример #28
0
    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");
Пример #29
0
<?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();
?>
Пример #30
0
    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");