function renderRow($unixTime, $fullArray) { $out = ""; switch ($fullArray["tipo"]) { case "SeguimientoDeServicio": $ods = OrdenDeServicioDAO::getByPK($fullArray["id_orden_de_servicio"]); $s = ServicioDAO::getByPK($ods->getIdServicio()); $out .= '<strong> Seguimiento De Orden ' . $s->getNombreServicio() . ' ' . $fullArray["id_orden_de_servicio"] . ' </strong>'; $out .= $fullArray["estado"]; $u = $fullArray["id_usuario"]; break; case "ClienteSeguimiento": $out .= '<strong> Seguimiento </strong>'; $out .= $fullArray["texto"]; $u = $fullArray["id_usuario"]; break; case "OrdenDeServicio": $ods = OrdenDeServicioDAO::getByPK($fullArray["id_orden_de_servicio"]); $s = ServicioDAO::getByPK($ods->getIdServicio()); $out .= '<strong>Nueva Orden de Servicio</strong> ' . $s->getNombreServicio() . ' ' . $fullArray["id_orden_de_servicio"] . ' '; $out .= $fullArray["descripcion"]; $u = $fullArray["id_usuario"]; break; case "Venta": if ($fullArray["cancelada"]) { $out .= '<strong><strike>Venta Cancelada ' . $fullArray["id_venta"] . '</strike></strong>'; } else { $out .= '<strong>Venta ' . $fullArray["id_venta"] . '</strong>'; } $out .= ' ' . FormatMoney($fullArray["total"]) . ' ' . $fullArray["tipo_de_venta"]; $u = $fullArray["id_usuario"]; break; case "Cotizacion": $out .= '<strong>Venta ' . $fullArray["id_venta"] . '</strong>'; $u = $fullArray["id_usuario"]; break; } //return json_encode( $fullVo ); $u = UsuarioDAO::getByPK($u)->getNombre(); $out .= '<br><div style="text-align: right; font-size:10px; color:gray">' . FormatTime($fullArray["fecha"]) . ' por ' . $u . "</div>"; return $out; }
public static function OrdenDeServicio($id_orden) { //obtengamos datos de esta orden de servicio //el cliente $daoOrden = OrdenDeServicioDAO::getByPK($id_orden); $daoCliente = UsuarioDAO::getByPK($daoOrden->getIdUsuarioVenta()); $daoAgente = UsuarioDAO::getByPK($daoOrden->getIdUsuario()); $daoServicio = ServicioDAO::getByPK($daoOrden->getIdServicio()); $pdf = self::createPdf("Orden de Servicio " . $id_orden, $daoServicio->getNombreServicio()); self::printClient($pdf, $daoCliente); $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'] = self::puntos_cm(7.5); $opciones_tabla['width'] = self::puntos_cm(11); $opciones_tabla['textCol'] = array(0, 0, 0); $opciones_tabla['titleFontSize'] = 12; $opciones_tabla['rowGap'] = 3; $opciones_tabla['colGap'] = 3; $datos = array(array("col" => "<b>Servicio</b>"), array("col" => $daoServicio->getCodigoServicio()), array("col" => "<b>Numero de orden</b>"), array("col" => $daoOrden->getIdOrdenDeServicio()), array("col" => "<b>Fecha de entrega</b>"), array("col" => "")); $pdf->ezSetY(self::puntos_cm(26.8)); $opciones_tabla['xPos'] = self::puntos_cm(14.2); $opciones_tabla['width'] = self::puntos_cm(4); $opciones_tabla['showLines'] = 0; $opciones_tabla['shaded'] = 2; $opciones_tabla['shadeCol'] = array(1, 1, 1); $opciones_tabla['shadeCol2'] = array(0.8984375, 0.95703125, 0.99609375); $pdf->ezTable($datos, "", "", $opciones_tabla); /* ************************ * PRODUCTOS * ************************* */ $elementos = array(array('cantidad' => 'Detalles de la orden', 'unidad' => '')); $eP = $daoOrden->getExtraParams(); if (!is_null($eP)) { $ePObj = json_decode($eP); foreach ($ePObj as $obj) { $row["cantidad"] = "<b>" . $obj->desc . "</b>"; $row["unidad"] = $obj->value; $row["agrupacion"] = ""; $row["descripcion"] = ""; $row["precio"] = ""; $row["importe"] = ""; array_push($elementos, $row); } } $pdf->ezText("", 10, array('justification' => 'center')); $pdf->ezSetY(self::puntos_cm(18.6)); $opciones_tabla['xPos'] = self::puntos_cm(2); $opciones_tabla['width'] = self::puntos_cm(16.2); $pdf->ezTable($elementos, "", "", $opciones_tabla); self::drawBasicGuide($pdf); $pdf->ezStream(); return; }
function funcion_orden_de_servicio($id_orden_de_servicio) { return OrdenDeServicioDAO::getByPK($id_orden_de_servicio) ? ServicioDAO::getByPK(OrdenDeServicioDAO::getByPK($id_orden_de_servicio)->getIdServicio())->getNombreServicio() : "---------"; }
<?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 (is_null($esta_orden)) { $page->addComponent(new TitleComponent("Ups", 2)); $page->addComponent(new TitleComponent("La orden " . $_GET["oid"] . " no existe", 3)); $page->render(); } // // Titulo de la pagina // $link = "<a href='servicios.detalle.orden.php?oid=" . $_GET["oid"] . "'>" . $_GET["oid"] . "</a>"; $page->addComponent(new TitleComponent("Seguimiento a la orden de servicio " . $link, 2)); // // Forma de usuario // $form = new DAOFormComponent(new SeguimientoDeServicio(array("id_orden_de_servicio" => $_GET["oid"]))); $form->hideField(array("id_seguimiento_de_servicio", "id_usuario", "id_sucursal", "fecha_seguimiento")); $form->makeObligatory(array("estado")); $form->sendHidden("id_orden_de_servicio"); $form->addApiCall("api/servicios/orden/seguimiento/"); $form->onApiCallSuccessRedirect("servicios.detalle.orden.php?oid=" . $_GET["oid"]); $form->renameField(array("estado" => "nota")); //$form->createComboBoxJoinDistintName( "id_localizacion", "id_sucursal" , "razon_social", SucursalDAO::search(new Sucursal( array( "activa" => 1 ) )) );
private static function ObtenerEmpresasParaAsignacionVenta($detalle_producto = null, $detalle_paquete = null, $detalle_orden = null) { //inicializa los arreglos base $empresas = array(); $id_empresas = array("id" => array(), "total" => array()); //bandera que indica si se recibio alguno de los 3 detalles $parametro = false; //Para todos los detalles, se recorre el detalle recibido, se validan sus datos //y se buscan las empresas que tengan ese elemento. Despues se llama al metodo //InsertarIdEmpresa que se encarga de acomodar el arreglo de empresas y su total //correspondiente if (!is_null($detalle_producto)) { $parametro = true; $producto_empresa = new ProductoEmpresa(); foreach ($detalle_producto as $d_p) { $producto_empresa->setIdProducto($d_p["id_producto"]); $productos_empresa = ProductoEmpresaDAO::search($producto_empresa); foreach ($productos_empresa as $p_e) { self::InsertarIdEmpresa($p_e, $id_empresas, $d_p["precio"] * $d_p["cantidad"]); } } } if (!is_null($detalle_paquete)) { $parametro = true; $paquete_empresa = new PaqueteEmpresa(); foreach ($detalle_paquete as $d_p) { $paquete_empresa->setIdPaquete($d_p["id_paquete"]); $paquetes_empresa = PaqueteEmpresaDAO::search($paquete_empresa); foreach ($paquetes_empresa as $p_e) { self::InsertarIdEmpresa($p_e, $id_empresas, $d_p["precio"] * $d_p["cantidad"]); } } } if (!is_null($detalle_orden)) { $parametro = true; $servicio_empresa = new ServicioEmpresa(); foreach ($detalle_orden as $orden) { $orden_de_servicio = OrdenDeServicioDAO::getByPK($orden["id_orden_de_servicio"]); $servicio_empresa->setIdServicio($orden_de_servicio->getIdServicio()); $servicios_empresa = ServicioEmpresaDAO::search($servicio_empresa); foreach ($servicios_empresa as $s_e) { self::InsertarIdEmpresa($s_e, $id_empresas, $orden["precio"]); } } } //Si no se recibio ningun detalle se arroja una excepcion if (!$parametro) { throw new Exception("No se recibio un id_producto ni un id_paquete ni un id_orden"); } return $id_empresas; }
/** * *En algunos servicios, se realiza la venta de productos de manera indirecta, por lo que se tiene que agregar a la orden de servicio. * * @param id_orden_de_servicio int Id de la orden de servicio a la cual se le agregaran los productos * @param productos json Arreglo de objetos con ids de producto, de unidad, sus cantidades, su precio, su impuesto, retencion y descuento. **/ static function ProductosAgregarOrden($id_orden_de_servicio, $productos) { Logger::log("Agregando productos a la orden de servicio " . $id_orden_de_servicio); //Se valida la orden de servicio $validar = self::validarParametrosOrdenDeServicio($id_orden_de_servicio); if (is_string($validar)) { Logger::error($validar); throw new Exception($validar, 901); } //valida que los productos sean validos $productos = object_to_array($productos); if (!is_array($productos)) { throw new Exception("Los productos son invalidos", 901); } //El precio de la orden de servicio se incrementara por cada precio encontrado en los productos $orden_de_servicio = OrdenDeServicioDAO::getByPK($id_orden_de_servicio); //Se almacenaran todos los productos obtenidos con us informacion $producto_orden_de_servicio = new ProductoOrdenDeServicio(array("id_orden_de_servicio" => $id_orden_de_servicio)); DAO::transBegin(); try { /* * Por cada producto en el arreglo, se busca en la tabla de productos orden, * pues puede ser que el usuario haya querido agregar mas producto al que ya habia. * * Si no se encuentra en la tabla, simplemente se crea un nuevo registro */ foreach ($productos as $producto) { if (!array_key_exists("id_producto", $producto) || !array_key_exists("id_unidad", $producto) || !array_key_exists("cantidad", $producto) || !array_key_exists("precio", $producto) || !array_key_exists("descuento", $producto) || !array_key_exists("impuesto", $producto) || !array_key_exists("retencion", $producto)) { throw new Exception("Los productos no contienen los parametros necesarios", 901); } $producto_anterior = ProductoOrdenDeServicioDAO::getByPK($id_orden_de_servicio, $producto["id_producto"], $producto["id_unidad"]); if (!is_null($producto_anterior)) { $producto_orden_de_servicio = $producto_anterior; $cantidad_anterior = $producto_orden_de_servicio->getCantidad(); $producto_orden_de_servicio->setCantidad($cantidad_anterior + $producto["cantidad"]); } else { $validar = self::validarParametrosProductoOrdenDeServicio($producto["id_producto"], $producto["precio"], $producto["cantidad"], $producto["descuento"], $producto["impuesto"], $producto["retencion"], $producto["id_unidad"]); if (is_string($validar)) { throw new Exception($validar, 901); } $producto_orden_de_servicio->setCantidad($producto["cantidad"]); $producto_orden_de_servicio->setDescuento($producto["descuento"]); $producto_orden_de_servicio->setIdProducto($producto["id_producto"]); $producto_orden_de_servicio->setIdUnidad($producto["id_unidad"]); $producto_orden_de_servicio->setImpuesto($producto["impuesto"]); $producto_orden_de_servicio->setPrecio($producto["precio"]); $producto_orden_de_servicio->setRetencion($producto["retencion"]); } //@TODO //La linea de codigo siguiente puede causar problemas, pues el precio de un producto puede cmabiar a lo largo del tiempo. //Si este metodo fue llamado para agregar mas cantidad a uno ya existente para esta orden en un rango de tiempo //donde el precio del producto cambio de la primera vez que fue agregado a esta, el precio registrado en la tabla //sera el de la primera vez, pero el producto agregado recientemente ya tiene otro precio. // //Si este producto es retirado con el metodo Quitar_productoOrden se tiene que pasar el precio que tenia este //producto a la hora de agregarlo para que el precio total de la orden de servicio no se vea alterada. // $orden_de_servicio->setPrecio($orden_de_servicio->getPrecio() + $producto["cantidad"] * $producto["precio"]); ProductoOrdenDeServicioDAO::save($producto_orden_de_servicio); OrdenDeServicioDAO::save($orden_de_servicio); } } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo agregar el producto a la orden: " . $e); if ($e->getCode() == 901) { throw new Exception("No se pudo agregar el producto a la orden: " . $e->getMessage(), 901); } throw new Exception("No se pudo agregar el producto a la orden, consulte al administrador del sistema", 901); } DAO::transEnd(); Logger::log("Producto agregado exitosamente"); }
/** * * Registrar un gasto. El usuario y la sucursal que lo registran ser?tomados de la sesi?ctual. * * <br/><br/><b>Update :</b>Ademas deber?tambi?de tomar la fecha de ingreso del gasto del servidor y agregar tambi?como par?tro una fecha a la cual se deber?de aplicar el gasto. Por ejemplo si el d?09/09/11 (viernes) se tomo dinero para pagar la luz, pero resulta que ese d?se olvidaron de registrar el gasto y lo registran el 12/09/11 (lunes). Entonces tambien se deberia de tomar como parametro una <b>fecha</b> a la cual aplicar el gasto, tambien se deberia de enviar como parametro una <b>nota</b> * * @param fecha_gasto string Fecha del gasto * @param id_empresa int Id de la empresa a la que pertenece este gasto * @param billetes json Los billetes que se retiran de la caja por pagar este gasto * @param descripcion string Descripcion del gasto en caso de que no este contemplado en la lista de concpetos de gasto * @param folio string Folio de la factura del gasto * @param id_caja int Id de la caja de la que se sustrae el dinero para pagar el gasto * @param id_concepto_gasto int Id del concepto al que hace referencia el gasto * @param id_orden_de_servicio int Id de la orden del servicio que genero este gasto * @param id_sucursal int Id de la sucursal a la que pertenece este gasto * @param monto float Monto del gasto en caso de que no este contemplado por el concepto de gasto o sea diferente a este * @param nota string Nota del gasto * @return id_gasto int Id generado por la insercin del nuevo gasto **/ public static function NuevoGasto($fecha_gasto, $id_empresa, $billetes = null, $descripcion = null, $folio = null, $id_caja = null, $id_concepto_gasto = null, $id_orden_de_servicio = null, $id_sucursal = null, $monto = null, $nota = null) { //obtiene al usuario de la sesion actual $id_usuario = SesionController::Actual(); $id_usuario = $id_usuario["id_usuario"]; if (is_null($id_usuario)) { throw new Exception("No se pudo obtener el usuario de la sesion, ya inicio sesion?"); } //Se validan los parametros $validar = self::validarParametrosGasto(null, $id_empresa, $id_concepto_gasto, $id_orden_de_servicio, $fecha_gasto, $id_sucursal, $id_caja, $nota, $descripcion, $folio, $monto); //Si no se recibio monto, se toma del concepto de gasto. //Si no se recibio concepto de gasto o este no cuenta con un monto se manda una excepcion if (is_null($monto)) { if (is_null($id_concepto_gasto)) { throw new Exception("No se recibio un concepto de gasto ni un monto"); } $concepto_gasto = ConceptoGastoDAO::getByPK($id_concepto_gasto); if (is_null($concepto_gasto)) { throw new Exception("El concepto de gasto recibido no existe."); } $monto = $concepto_gasto->getMonto(); if (is_null($monto)) { throw new Exception("El concepto de gasto recibido no cuenta con un monto ni se recibio un monto"); } } //Si no se recibe sucursal ni caja se intenta tomar las actuales if (!$id_sucursal) { $id_sucursal = self::getSucursal(); } if (!$id_caja) { $id_caja = self::getCaja(); } if (!is_null($id_caja)) { try { CajasController::modificarCaja($id_caja, 0, $billetes, $monto); } catch (Exception $e) { throw $e; } } //Se inicializa el registro de gasto $gasto = new Gasto(); // fecha_gasto might be in the format : 2012-10-21T00:00:00 // if this is the case then act acordingly if (is_int($fecha_gasto)) { $gasto->setFechaDelGasto($fecha_gasto); } else { $gasto->setFechaDelGasto(strtotime($fecha_gasto)); } $gasto->setIdEmpresa($id_empresa); $gasto->setMonto($monto); $gasto->setIdSucursal($id_sucursal); $gasto->setIdCaja($id_caja); $gasto->setIdOrdenDeServicio($id_orden_de_servicio); $gasto->setIdConceptoGasto($id_concepto_gasto); $gasto->setDescripcion($descripcion); $gasto->setFolio($folio); $gasto->setNota($nota); $gasto->setFechaDeRegistro(time()); $gasto->setIdUsuario($id_usuario); $gasto->setCancelado(0); //Se incrementa el costo de la orden de servicio si este gasto se le asigna a alguna $orden_de_servicio = null; if (!is_null($id_orden_de_servicio)) { $orden_de_servicio = OrdenDeServicioDAO::getByPK($id_orden_de_servicio); $orden_de_servicio->setPrecio($monto + $orden_de_servicio->getPrecio()); } DAO::transBegin(); try { GastoDAO::save($gasto); if (!is_null($orden_de_servicio)) { OrdenDeServicioDAO::save($orden_de_servicio); } } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear el gasto: " . $e); throw new Exception("No se pudo crear el gasto"); } DAO::transEnd(); Logger::log("Gasto creado exitosamente"); return array("id_gasto" => $gasto->getIdGasto()); }