Example usage for org.apache.commons.fileupload DiskFileUpload DiskFileUpload

List of usage examples for org.apache.commons.fileupload DiskFileUpload DiskFileUpload

Introduction

In this page you can find the example usage for org.apache.commons.fileupload DiskFileUpload DiskFileUpload.

Prototype

public DiskFileUpload() 

Source Link

Document

Constructs an instance of this class which uses the default factory to create FileItem instances.

Usage

From source file:forseti.ventas.JVenFactDlg.java

@SuppressWarnings({ "unchecked", "rawtypes" })
public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    super.doPost(request, response);

    String ven_fact_dlg = "";
    request.setAttribute("ven_fact_dlg", ven_fact_dlg);

    String mensaje = "";
    short idmensaje = -1;
    String usuario = getSesion(request).getID_Usuario();

    if (request.getContentType() != null
            && request.getContentType().toLowerCase().indexOf("multipart/form-data") > -1) {
        if (!getSesion(request).getRegistrado()) {
            irApag("/forsetiweb/errorAtributos.jsp", request, response);
            return;
        } else {/* w w  w  . ja v  a  2  s  .c  o  m*/
            try {
                HttpSession ses = request.getSession(true);
                JFacturasXML venfactxml = (JFacturasXML) ses.getAttribute("ven_fact_xml");
                Vector archivos = new Vector();
                DiskFileUpload fu = new DiskFileUpload();
                List items = fu.parseRequest(request);
                Iterator iter = items.iterator();
                while (iter.hasNext()) {
                    FileItem item = (FileItem) iter.next();
                    if (item.isFormField())
                        venfactxml.getParametros().put(item.getFieldName(), item.getString());
                    else
                        archivos.addElement(item);
                }

                // revisa por las entidades
                JVentasEntidadesSetIdsV2 setids;
                String idmod = venfactxml.getParametros().getProperty("idmod"),
                        idmod4 = venfactxml.getParametros().getProperty("idmod4"),
                        moddes = venfactxml.getParametros().getProperty("moddes");

                request.setAttribute("idmod", idmod);
                request.setAttribute("moddes", moddes);

                setids = new JVentasEntidadesSetIdsV2(request, usuario,
                        getSesion(request).getSesion(idmod).getEspecial());
                setids.Open();

                if (setids.getNumRows() < 1) {
                    idmensaje = 3;
                    mensaje += MsjPermisoDenegado(request, "CEF", idmod);
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), idmod,
                            idmod4 + "||||", mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }

                if (!idmod.equals("VEN_DEV")) // Si no es devolucion
                {
                    if (!getSesion(request).getPermiso(idmod + "_AGREGAR")) {
                        idmensaje = 3;
                        mensaje += MsjPermisoDenegado(request, "CEF", idmod + "_AGREGAR");
                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                                idmod + "_AGREGAR", idmod4 + "||||", mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    }
                } else {
                    if (!getSesion(request).getPermiso("VEN_DEV_DEVOLVER")
                            && !getSesion(request).getPermiso("VEN_DEV_REBAJAR")) {
                        idmensaje = 3;
                        mensaje += MsjPermisoDenegado(request, "CEF", "VEN_DEV_DEVOLVER") + " / "
                                + MsjPermisoDenegado(request, "CEF", "VEN_DEV_REBAJAR");
                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                                "VEN_DEV_DEVOLVER", "VDEV||||", mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    }
                }

                SubirArchivosCFD(request, response, venfactxml, archivos);
                return;
            } catch (FileUploadException e) {
                e.printStackTrace();
                return;
            } catch (Exception e) {
                e.printStackTrace();
                return;
            }
        }
    }

    if (request.getParameter("proceso") != null && !request.getParameter("proceso").equals("")) {
        // revisa por las entidades
        JVentasEntidadesSetIdsV2 setids;
        String idmod, idmod4, moddes;

        if (request.getParameter("tipomov").equals("FACTURAS")) {
            idmod = "VEN_FAC";
            idmod4 = "VFAC";
            moddes = "FACTURAS";
        } else if (request.getParameter("tipomov").equals("PEDIDOS")) {
            idmod = "VEN_PED";
            idmod4 = "VPED";
            moddes = "PEDIDOS";
        } else if (request.getParameter("tipomov").equals("REMISIONES")) {
            idmod = "VEN_REM";
            idmod4 = "VREM";
            moddes = "REMISIONES";
        } else if (request.getParameter("tipomov").equals("COTIZACIONES")) {
            idmod = "VEN_COT";
            idmod4 = "VCOT";
            moddes = "COTIZACIONES";
        } else {
            idmod = "VEN_DEV";
            idmod4 = "VDEV";
            moddes = "DEVOLUCIONES";
        }
        request.setAttribute("idmod", idmod);
        request.setAttribute("moddes", moddes);
        request.setAttribute("fact_xml", "VENTAS");

        setids = new JVentasEntidadesSetIdsV2(request, usuario,
                getSesion(request).getSesion(idmod).getEspecial());
        setids.Open();

        if (setids.getNumRows() < 1) {
            idmensaje = 3;
            mensaje += MsjPermisoDenegado(request, "CEF", idmod);
            getSesion(request).setID_Mensaje(idmensaje, mensaje);
            RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), idmod,
                    idmod4 + "||||", mensaje);
            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
            return;
        }

        // Revisa por intento de intrusion (Salto de permiso de entidad)
        if (!request.getParameter("proceso").equals("AGREGAR_VENTA") && request.getParameter("ID") != null) {
            boolean intrusion = false;
            if (moddes.equals("FACTURAS")) {
                JVentasFactSetV2 set = new JVentasFactSetV2(request);
                set.m_Where = "ID_Entidad = '" + setids.getAbsRow(0).getID_Entidad() + "' and ID_Factura = '"
                        + p(request.getParameter("ID")) + "'";
                set.Open();
                if (set.getNumRows() < 1)
                    intrusion = true;
            } else if (moddes.equals("REMISIONES")) {
                JVentasRemisionesSet set = new JVentasRemisionesSet(request);
                set.m_Where = "ID_Entidad = '" + setids.getAbsRow(0).getID_Entidad() + "' and ID_Remision = '"
                        + p(request.getParameter("ID")) + "'";
                set.Open();
                if (set.getNumRows() < 1)
                    intrusion = true;
            } else if (moddes.equals("PEDIDOS")) {
                JVentasPedidosSet set = new JVentasPedidosSet(request);
                set.m_Where = "ID_Entidad = '" + setids.getAbsRow(0).getID_Entidad() + "' and ID_Pedido = '"
                        + p(request.getParameter("ID")) + "'";
                set.Open();
                if (set.getNumRows() < 1)
                    intrusion = true;
            } else if (moddes.equals("COTIZACIONES")) {
                JVentasCotizacionesSet set = new JVentasCotizacionesSet(request);
                set.m_Where = "ID_Entidad = '" + setids.getAbsRow(0).getID_Entidad() + "' and ID_Cotizacion = '"
                        + p(request.getParameter("ID")) + "'";
                set.Open();
                if (set.getNumRows() < 1)
                    intrusion = true;
            } else {
                JVentasDevolucionesSet set = new JVentasDevolucionesSet(request);
                set.m_Where = "ID_Entidad = '" + setids.getAbsRow(0).getID_Entidad() + "' and ID_Devolucion = '"
                        + p(request.getParameter("ID")) + "'";
                set.Open();
                if (set.getNumRows() < 1)
                    intrusion = true;
            }

            if (intrusion) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", idmod);
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "AL", getSesion(request).getID_Usuario(), idmod,
                        idmod4 + "|" + request.getParameter("ID") + "|" + setids.getAbsRow(0).getID_Entidad()
                                + "||",
                        mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }
        }

        if (request.getParameter("proceso").equals("ENLAZAR_VENTA")) {
            if (moddes.equals("FACTURAS") || moddes.equals("REMISIONES") || moddes.equals("DEVOLUCIONES")) {
                // Revisa si tiene permisos
                if (!idmod.equals("VEN_DEV")) // Si no es devolucion
                {
                    if (!getSesion(request).getPermiso(idmod + "_AGREGAR")) {
                        idmensaje = 3;
                        mensaje += MsjPermisoDenegado(request, "CEF", idmod + "_AGREGAR");
                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                                idmod + "_AGREGAR", idmod4 + "||||", mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    }
                } else {
                    if (!getSesion(request).getPermiso("VEN_DEV_DEVOLVER")
                            && !getSesion(request).getPermiso("VEN_DEV_REBAJAR")) {
                        idmensaje = 3;
                        mensaje += MsjPermisoDenegado(request, "CEF", "VEN_DEV_DEVOLVER") + " / "
                                + MsjPermisoDenegado(request, "CEF", "VEN_DEV_REBAJAR");
                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                                "VEN_DEV_DEVOLVER", "VDEV||||", mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    }
                }

                if (setids.getAbsRow(0).getCFD() || setids.getAbsRow(0).getFija()) {
                    idmensaje = 3;
                    mensaje += "ERROR: No se puede enlazar ningun CFDI porque esta entidad de venta est establecida como Fija o genera sus propios CFDIs<br>";
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }

                if (request.getParameter("subproceso") == null) // Como el subproceso no es ENVIAR ni ENLAZAR,
                {
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/fact_dlg_xmls.jsp", request, response);
                    return;
                } else {
                    if (request.getParameter("subproceso").equals("ENLAZAR")) {
                        // Se supone que la compra aun no estar ligada a una compra existente...
                        HttpSession ses = request.getSession(true);
                        JVenFactSes rec = (JVenFactSes) ses.getAttribute("ven_fact_dlg");
                        if (rec == null) {
                            rec = new JVenFactSes(request, getSesion(request).getSesion(idmod).getEspecial(),
                                    usuario, moddes);
                            ses.setAttribute("ven_fact_dlg", rec);
                        } else
                            rec.resetear(request, getSesion(request).getSesion(idmod).getEspecial(), usuario,
                                    moddes);

                        JCFDCompSet comprobante = new JCFDCompSet(request, "VENTAS");
                        comprobante.m_Where = "UUID = '" + p(request.getParameter("uuid")) + "'";
                        comprobante.Open();

                        if (comprobante.getNumRows() < 1
                                || !comprobante.getAbsRow(0).getFSI_Tipo().equals("ENT")
                                || comprobante.getAbsRow(0).getFSI_ID() != Integer
                                        .parseInt(getSesion(request).getSesion(idmod).getEspecial())) {
                            idmensaje = 3;
                            mensaje += "ERROR: No se ha cargado el CFDI de la venta, este ya esta ligado a otra venta, o el CFDI se carg en otra entidad<br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JFacturasXML venfactxml = new JFacturasXML();

                        StringBuffer sb_mensaje = new StringBuffer();
                        if (!JForsetiCFD.CargarDocumentoCFDI(request, venfactxml, sb_mensaje,
                                request.getParameter("uuid"), "I")) {
                            idmensaje = 3;
                            mensaje += sb_mensaje.toString();
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        if ((venfactxml.getComprobante().getProperty("tipoDeComprobante").equals("ingreso")
                                && moddes.equals("DEVOLUCIONES"))
                                || (venfactxml.getComprobante().getProperty("tipoDeComprobante")
                                        .equals("egreso") && !moddes.equals("DEVOLUCIONES"))
                                || venfactxml.getComprobante().getProperty("tipoDeComprobante")
                                        .equals("traslado")) {
                            idmensaje = 3;
                            mensaje += "ERROR: El tipo de comprobante fiscal digital CFDI, No corresponde con el tipo de documento a enlazar.<br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        //Verifica que el RFC del Emisor sea igual al RFC registrado, o que sea rfc generico
                        JBDSSet set = new JBDSSet(request);
                        set.ConCat(true);
                        set.m_Where = "Nombre = 'FSIBD_" + p(getSesion(request).getBDCompania()) + "'";
                        set.Open();
                        if (!venfactxml.getRFC_Emisor().equalsIgnoreCase(set.getAbsRow(0).getRFC())) {
                            idmensaje = 3;
                            mensaje = "ERROR: El RFC del emisor en el XML no pertenece a la compaia";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje.toString());
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        if (request.getParameter("ID") == null) // Significa que debe agregar una nueva venta 
                        {
                            if (moddes.equals("DEVOLUCIONES") || moddes.equals("PEDIDOS")
                                    || moddes.equals("COTIZACIONES")) {
                                idmensaje = 1;
                                mensaje = "PRECAUCION: Solo se pueden enlazar devoluciones previamente generadas desde facturas. Selecciona una devolucin e intenta enlazar de nuevo.";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje.toString());
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                            float descuento = Float
                                    .parseFloat(venfactxml.getComprobante().getProperty("descuento"));
                            if (descuento != 0.0) {
                                idmensaje = 1;
                                mensaje = "PRECAUCION: Por el momento, la carga de ventas no soportan descuentos implicitos porque en el CFDI no se especifica a que producto(s) o servicio(s) aplica cada descuento, lo que hace imposible determinar un costo verdadero.";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje.toString());
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                            rec.agregaCFDI(venfactxml);

                            Date fecha = JUtil.estFechaCFDI(venfactxml.getComprobante().getProperty("fecha"));
                            rec.setFecha(fecha);
                            float tc;
                            try {
                                tc = Float.parseFloat(venfactxml.getComprobante().getProperty("TipoCambio"));
                            } catch (NumberFormatException e) {
                                tc = 1.0F;
                            }
                            rec.setTC(tc);
                            int idmon = ((tc == 1) ? 1 : 2); //cambiar por 2 cuando se inserte moneda de dolares automaticamente al instalar empresa... Para ya distribuir
                            rec.setID_Moneda((byte) idmon);
                            rec.setTotal(Float.parseFloat(venfactxml.getComprobante().getProperty("total")));
                            float iva;
                            try {
                                iva = Float.parseFloat(
                                        venfactxml.getImpuestos().getProperty("totalImpuestosTrasladados"));
                            } catch (NumberFormatException e) {
                                iva = 0.0F;
                            }
                            rec.setIVA(iva);
                            rec.setSubTotal(
                                    Float.parseFloat(venfactxml.getComprobante().getProperty("subTotal")));
                            rec.setDescuento(descuento);
                            rec.setImporte(rec.getSubTotal() - descuento);
                            rec.setReferencia("s/r");
                            rec.setFechaEntrega(fecha);
                            JPublicContMonedasSetV2 setMon = new JPublicContMonedasSetV2(request);
                            setMon.m_Where = "Clave = '" + idmon + "'";
                            setMon.Open();
                            rec.setMoneda(setMon.getAbsRow(0).getMoneda());
                            rec.setObs("Carga desde Factura Electrnica: "
                                    + venfactxml.getTFD().getProperty("UUID"));
                            rec.setID_Bodega(setids.getAbsRow(0).getID_Bodega());
                            rec.setBodegaDesc(setids.getAbsRow(0).getBodega());

                            JClientClientMasSetV2 setcli = new JClientClientMasSetV2(request);
                            setcli.m_Where = "ID_Tipo = 'CL' and ID_EntidadVenta = '"
                                    + getSesion(request).getSesion(idmod).getEspecial() + "' and RFC ~~* '"
                                    + p(venfactxml.getRFC_Receptor()) + "'";
                            setcli.Open();

                            if (setcli.getNumRows() > 0) {
                                JClientClientSetV2 setcli2 = new JClientClientSetV2(request);
                                setcli2.m_Where = "ID_Tipo = 'CL' and Clave = '"
                                        + setcli.getAbsRow(0).getID_Clave() + "'";
                                setcli2.Open();

                                rec.setClave(setcli.getAbsRow(0).getID_Clave());
                                rec.setNombre(setcli2.getAbsRow(0).getNombre());
                                rec.setRFC(venfactxml.getRFC_Emisor());
                                rec.setNumero(setcli2.getAbsRow(0).getNumero());
                                rec.setColonia(setcli.getAbsRow(0).getColonia());
                                rec.setCP(setcli.getAbsRow(0).getCP());
                                rec.setDireccion(setcli.getAbsRow(0).getDireccion());
                                rec.setPoblacion(setcli.getAbsRow(0).getPoblacion());
                                rec.setTels(setcli2.getAbsRow(0).getTel());
                                rec.setID_Vendedor(setcli.getAbsRow(0).getID_Vendedor());
                                rec.setVendedorNombre(setcli.getAbsRow(0).getVendedorNombre());
                            }

                            for (int i = 0; i < venfactxml.getConceptos().size(); i++) {
                                Properties concepto = (Properties) venfactxml.getConceptos().elementAt(i);
                                float cantidad = Float.parseFloat(concepto.getProperty("cantidad"));
                                float precio = Float.parseFloat(concepto.getProperty("valorUnitario"));
                                String unidad = concepto.getProperty("unidad");
                                String idprod = "";
                                String descripcion = concepto.getProperty("descripcion");
                                String obs = concepto.getProperty("descripcion");
                                String tipo = "";
                                float importe = Float.parseFloat(concepto.getProperty("importe"));
                                float ivapor = 0.00F, iepspor = 0.00F, ivaretpor = 0.00F, isrretpor = 0.00F,
                                        ivaimp = 0.00F, iepsimp = 0.00F, ivaretimp = 0.00F, isrretimp = 0.00F;
                                float totalPart = importe;

                                JPublicInvServInvCatalogSetV2 cat = new JPublicInvServInvCatalogSetV2(request);
                                cat.m_Where = "(Clave = '" + p(concepto.getProperty("noIdentificacion"))
                                        + "' or Codigo = '" + p(concepto.getProperty("noIdentificacion"))
                                        + "') and NoSeVende = '0' and Status = 'V'";
                                //System.out.println(cat.getSQL());
                                cat.Open();
                                if (cat.getNumRows() > 0) {
                                    idprod = cat.getAbsRow(0).getClave();
                                    descripcion = cat.getAbsRow(0).getDescripcion();
                                    tipo = cat.getAbsRow(0).getID_Tipo();
                                }
                                //System.out.println(descripcion + " " + ivapor + " " + ivaimp + " " + totalPart);
                                rec.agregaPartida(cantidad, unidad, idprod, idprod, descripcion, precio,
                                        importe, 0.00F, ivapor, iepspor, ivaretpor, isrretpor, 0.00F, ivaimp,
                                        iepsimp, ivaretimp, isrretimp, totalPart, obs, tipo);
                            }

                            rec.setUUID(venfactxml.getTFD().getProperty("UUID"));
                            rec.setTotalUUIDs(JUtil.redondear(
                                    Float.parseFloat(venfactxml.getComprobante().getProperty("total")), 2));
                            idmensaje = rec.establecerConcordancia(request, sb_mensaje);
                            rec.establecerResultados();
                            if ((rec.getTotal() - rec.getTotalUUIDs()) > 0.1
                                    || (rec.getTotal() - rec.getTotalUUIDs()) < -0.1) {
                                idmensaje = 3;
                                sb_mensaje.append(
                                        "ERROR: El total en el o los CFDI no corresponden al Total calculado en el registro a partir de estos CFDI. No se puede agregar. DOC: "
                                                + rec.getTotal() + " XML: " + rec.getTotalUUIDs());
                            }

                            getSesion(request).setID_Mensaje(idmensaje, sb_mensaje.toString());
                            irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                            return;
                        } else // Significa que debe Enlazar a una compra existente
                        {
                            ////////////////////////////////////////////////
                            String[] valoresParam = request.getParameterValues("ID");
                            if (valoresParam.length == 1) {
                                if (moddes.equals("REMISIONES")) {
                                    JVentasRemisionesSet SetMod = new JVentasRemisionesSet(request);
                                    SetMod.m_Where = "ID_Remision = '" + p(request.getParameter("ID")) + "'";
                                    SetMod.Open();

                                    if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                                        idmensaje = 1;
                                        mensaje += "PRECAUCION: Esta remisin ya esta cancelada, no se puede enlazar el CFDI<br>";
                                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                        return;
                                    }

                                    if (SetMod.getAbsRow(0).getStatus().equals("F")
                                            || SetMod.getAbsRow(0).getStatus().equals("N")) {
                                        idmensaje = 1;
                                        mensaje += "PRECAUCION: Esta remisin ya tiene una factura asociada, no se puede enlazar el CFDI. Debes enlazarlo a la factura<br>";
                                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                        return;
                                    }

                                    if (SetMod.getAbsRow(0).getID_CFD() != 0) {
                                        idmensaje = 1;
                                        mensaje += "PRECAUCION: Esta remisin ya tiene un CFDI asociado. No puedes asociar otro CFDI a la misma remisin<br>";
                                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                        return;
                                    }

                                    JClientClientMasSetV2 setcli = new JClientClientMasSetV2(request);
                                    setcli.m_Where = "ID_Tipo = 'CL' and ID_EntidadVenta = '"
                                            + getSesion(request).getSesion(idmod).getEspecial()
                                            + "' and ID_Clave = '" + SetMod.getAbsRow(0).getID_Cliente() + "'";
                                    setcli.Open();

                                    if (SetMod.getAbsRow(0).getTotal() != Float
                                            .parseFloat(venfactxml.getComprobante().getProperty("total"))
                                            || !setcli.getAbsRow(0).getRFC()
                                                    .equals(venfactxml.getRFC_Receptor())) {
                                        idmensaje = 1;
                                        mensaje += "PRECAUCION: Los totales o los RFCs de la remisin y el CFDI no coinciden. No se puede asociar este CFDI al registro<br>";
                                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                        return;
                                    }

                                } else if (moddes.equals("FACTURAS")) {
                                    JVentasFactSetV2 SetMod = new JVentasFactSetV2(request);
                                    SetMod.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                                    SetMod.Open();

                                    if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                                        idmensaje = 1;
                                        mensaje += "PRECAUCION: Esta factura ya esta cancelada, no se puede enlazar el CFDI<br>";
                                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                        return;
                                    }

                                    if (SetMod.getAbsRow(0).getID_CFD() != 0) {
                                        idmensaje = 1;
                                        mensaje += "PRECAUCION: Esta factura ya tiene un CFDI asociado. No puedes asociar otro CFDI a la misma factura<br>";
                                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                        return;
                                    }

                                    JClientClientMasSetV2 setcli = new JClientClientMasSetV2(request);
                                    setcli.m_Where = "ID_Tipo = 'CL' and ID_EntidadVenta = '"
                                            + getSesion(request).getSesion(idmod).getEspecial()
                                            + "' and ID_Clave = '" + SetMod.getAbsRow(0).getID_Cliente() + "'";
                                    setcli.Open();

                                    if (SetMod.getAbsRow(0).getTotal() != Float
                                            .parseFloat(venfactxml.getComprobante().getProperty("total"))
                                            || !setcli.getAbsRow(0).getRFC()
                                                    .equals(venfactxml.getRFC_Receptor())) {
                                        idmensaje = 1;
                                        mensaje += "PRECAUCION: Los totales o los RFCs de la factura y el CFDI no coinciden. No se puede asociar este CFDI al registro<br>";
                                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                        return;
                                    }

                                } else if (moddes.equals("DEVOLUCIONES")) {
                                    JVentasDevolucionesSet SetMod = new JVentasDevolucionesSet(request);
                                    SetMod.m_Where = "ID_Devolucion = '" + p(request.getParameter("ID")) + "'";
                                    SetMod.Open();

                                    if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                                        idmensaje = 1;
                                        mensaje += "PRECAUCION: Esta devolucion ya esta cancelada, no se puede enlazar el CFDI<br>";
                                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                        return;
                                    }

                                    if (SetMod.getAbsRow(0).getID_CFD() != 0) {
                                        idmensaje = 1;
                                        mensaje += "PRECAUCION: Esta devolucion ya tiene un CFDI asociado. No puedes asociar otro CFDI a la misma compra<br>";
                                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                        return;
                                    }

                                    JClientClientMasSetV2 setcli = new JClientClientMasSetV2(request);
                                    setcli.m_Where = "ID_Tipo = 'CL' and ID_EntidadVenta = '"
                                            + getSesion(request).getSesion(idmod).getEspecial()
                                            + "' and ID_Clave = '" + SetMod.getAbsRow(0).getID_Cliente() + "'";
                                    setcli.Open();

                                    if (SetMod.getAbsRow(0).getTotal() != Float
                                            .parseFloat(venfactxml.getComprobante().getProperty("total"))
                                            || !setcli.getAbsRow(0).getRFC()
                                                    .equals(venfactxml.getRFC_Receptor())) {
                                        idmensaje = 1;
                                        mensaje += "PRECAUCION: Los totales o los RFCs de la devolucion y el CFDI no coinciden. No se puede asociar este CFDI al registro<br>";
                                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                        return;
                                    }

                                } else // sale si no es recepcion, factura gasto o devolucion 
                                    return;

                                // Aqui asocia.
                                Enlazar(request, response, moddes, idmod, idmod4);
                                return;
                            } else {
                                idmensaje = 1;
                                mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2);
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                        }

                    } else if (request.getParameter("subproceso").equals("ENVIAR")) {
                        if (AgregarRecursos(request, response) == -1) {
                            HttpSession ses = request.getSession(true);
                            JVenFactSes rec = (JVenFactSes) ses.getAttribute("ven_fact_dlg");
                            rec.setReferencia(p(request.getParameter("referencia")));

                            if (moddes.equals("FACTURAS")) {
                                if (request.getParameter("forma_pago").equals("contado")) {
                                    request.setAttribute("fsipg_tipo", "ventas");
                                    request.setAttribute("fsipg_proc", "deposito");
                                    request.setAttribute("fsipg_total", rec.getTotal());
                                    request.setAttribute("fsipg_ident",
                                            getSesion(request).getSesion(idmod).getEspecial());
                                    if (VerificarParametros(request, response)
                                            && VerificarPagoMult(request, response)) {
                                        Agregar(request, response, moddes, setids, idmod, idmod4);
                                        return;
                                    }
                                } else {
                                    if (VerificarParametros(request, response)) {
                                        request.setAttribute("fsipg_cambio", 0F);
                                        request.setAttribute("fsipg_efectivo", 0F);
                                        request.setAttribute("fsipg_bancos", 0F);
                                        Agregar(request, response, moddes, setids, idmod, idmod4);
                                        return;
                                    }
                                }
                            } else if (moddes.equals("REMISIONES")) {
                                if (VerificarParametros(request, response)) {
                                    request.setAttribute("fsipg_cambio", 0F);
                                    request.setAttribute("fsipg_efectivo", 0F);
                                    request.setAttribute("fsipg_bancos", 0F);
                                    Agregar(request, response, moddes, setids, idmod, idmod4);
                                    return;
                                }
                            } else // sale si es devolucion u orden... Las devoluciones no se pueden enlazar desde cero, solo enlaces a devoluciones creadas previamente
                                return;
                        }
                        irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                        return;
                    }
                }
            } else // Sale si no es FACTURA, DEVOLUCION O REMISION
                return;
        } else if (request.getParameter("proceso").equals("AGREGAR_VENTA")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso(idmod + "_AGREGAR")) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", idmod + "_AGREGAR");
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                        idmod + "_AGREGAR", idmod4 + "||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("subproceso") == null) // Como el subproceso no es ENVIAR ni AGR_PART ni EDIT_PART ni BORR_PART, abre la ventana del proceso de AGREGADO para agregar `por primera vez
            {
                HttpSession ses = request.getSession(true);
                JVenFactSes rec = (JVenFactSes) ses.getAttribute("ven_fact_dlg");

                if (rec == null) {
                    rec = new JVenFactSes(request, getSesion(request).getSesion(idmod).getEspecial(), usuario,
                            moddes);
                    ses.setAttribute("ven_fact_dlg", rec);
                } else
                    rec.resetear(request, getSesion(request).getSesion(idmod).getEspecial(), usuario, moddes);

                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                return;
            } else {
                // Solicitud de envio a procesar
                if (request.getParameter("subproceso").equals("ENVIAR")) {
                    if (AgregarCabecero(request, response) == -1) {
                        if (moddes.equals("FACTURAS")) {
                            HttpSession ses = request.getSession(true);
                            JVenFactSes rec = (JVenFactSes) ses.getAttribute("ven_fact_dlg");

                            if (request.getParameter("forma_pago").equals("contado")) {
                                request.setAttribute("fsipg_tipo", "ventas");
                                request.setAttribute("fsipg_proc", "deposito");
                                request.setAttribute("fsipg_total", rec.getTotal());
                                request.setAttribute("fsipg_ident",
                                        getSesion(request).getSesion(idmod).getEspecial());
                                if (VerificarParametros(request, response)
                                        && VerificarPagoMult(request, response)) {
                                    Agregar(request, response, moddes, setids, idmod, idmod4);
                                    return;
                                }

                            } else {
                                if (VerificarParametros(request, response)) {
                                    // establece los atributos por default para ventas de crdito
                                    request.setAttribute("fsipg_cambio", 0F);
                                    request.setAttribute("fsipg_efectivo", 0F);
                                    request.setAttribute("fsipg_bancos", 0F);
                                    Agregar(request, response, moddes, setids, idmod, idmod4);
                                    return;
                                }
                            }
                        } else {
                            if (VerificarParametros(request, response)) {
                                // establece los atributos por default para ventas de crdito
                                request.setAttribute("fsipg_cambio", 0F);
                                request.setAttribute("fsipg_efectivo", 0F);
                                request.setAttribute("fsipg_bancos", 0F);
                                Agregar(request, response, moddes, setids, idmod, idmod4);
                                return;
                            }
                        }
                    }

                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;

                } else if (request.getParameter("subproceso").equals("AGR_CLIENT")) {
                    AgregarCabecero(request, response);
                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;
                } else if (request.getParameter("subproceso").equals("AGR_PART")) {
                    if (AgregarCabecero(request, response) == -1) {
                        if (VerificarParametrosPartida(request, response))
                            AgregarPartida(request, response);
                    }

                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;
                } else if (request.getParameter("subproceso").equals("EDIT_PART")) {
                    if (AgregarCabecero(request, response) == -1) {
                        if (VerificarParametrosPartida(request, response))
                            EditarPartida(request, response);
                    }

                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;
                } else if (request.getParameter("subproceso").equals("BORR_PART")) {
                    if (AgregarCabecero(request, response) == -1) {
                        BorrarPartida(request, response);
                    }

                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;
                }
            }
        } else if (request.getParameter("proceso").equals("DATOS_EXPORTACION")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso("VEN_FAC_AGREGAR")) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", "VEN_FAC_AGREGAR");
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                        "VEN_FAC_AGREGAR", "VFAC||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("subproceso") == null) // Como el subproceso no es ENVIAR ni AGR_PART ni EDIT_PART ni BORR_PART, abre la ventana del proceso de AGREGADO para agregar `por primera vez
            {
                if (request.getParameter("ID") != null) {
                    String[] valoresParam = request.getParameterValues("ID");
                    if (valoresParam.length == 1) {
                        if (moddes.equals("FACTURAS")) {
                            JVentasFactSetV2 SetMod = new JVentasFactSetV2(request);
                            SetMod.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta venta ya esta cancelada, no se puede gestionar informacin de exportacin<br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                            if (setids.getAbsRow(0).getCFD() && SetMod.getAbsRow(0).getTFD() >= 2) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta venta ya esta sellada. No se puede gestionar informacin de exportacin porque ya est gestionada en el complemento de la factura electrnica generada por forseti<br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                            JClientClientMasSetV2 cli = new JClientClientMasSetV2(request);
                            cli.m_Where = "ID_Clave = '" + SetMod.getAbsRow(0).getID_Cliente() + "'";
                            cli.Open();

                            if (SetMod.getAbsRow(0).getID_Cliente() == 0 || SetMod.getAbsRow(0).getMoneda() == 1
                                    || cli.getAbsRow(0).getPais().equals("MEX")
                                    || cli.getAbsRow(0).getPedimento().equals("--")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Este cliente es nacional, o es un cliente extranjero con el cual no manejamos exportaciones definitivas, o en su defecto, la venta no fue realizada en moneda extranjera. No se puede gestionar informacin de exportacin<br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }
                        } else // sale si no es factura
                            return;

                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/ventas/ven_fact_dlg_datexp.jsp", request, response);
                        return;
                    } else {
                        idmensaje = 1;
                        mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2);
                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    }
                } else {
                    idmensaje = 3;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1);
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                // Solicitud de envio a procesar
                if (request.getParameter("subproceso").equals("ENVIAR")) {
                    if (VerificarParametrosDatosExportacion(request, response)) {
                        DatosExportacion(request, response);
                        return;
                    }

                    irApag("/forsetiweb/ventas/ven_fact_dlg_datexp.jsp", request, response);
                    return;
                }
            }
        } else if (request.getParameter("proceso").equals("CARGAR_VENTA")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso("ADM_CFDI_CARGAR")) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", "ADM_CFDI_CARGAR");
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                        "ADM_CFDI_CARGAR", idmod4 + "||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (setids.getAbsRow(0).getCFD() || setids.getAbsRow(0).getFija()) {
                idmensaje = 3;
                mensaje += "ERROR: No se puede cargar ningun CFDI porque esta entidad de venta est establecida como Fija o genera sus propios CFDIs<br>";
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            Integer subir_archivos = new Integer(2);
            request.setAttribute("subir_archivos", subir_archivos);

            HttpSession ses = request.getSession(true);
            JFacturasXML rec = (JFacturasXML) ses.getAttribute("ven_fact_xml");

            if (rec == null) {
                rec = new JFacturasXML();
                ses.setAttribute("ven_fact_xml", rec);
            } else {
                rec = null;
                rec = new JFacturasXML();
                ses.setAttribute("ven_fact_xml", rec);
            }

            getSesion(request).setID_Mensaje(idmensaje, mensaje);
            irApag("/forsetiweb/subir_archivos.jsp?verif=/servlet/CEFVenFactDlg&archivo_1=xml&archivo_2=pdf&proceso=CARGAR_VENTA&subproceso=ENVIAR&moddes="
                    + moddes + "&idmod=" + idmod + "&idmod4=" + idmod4, request, response);
            return;

        } else if (request.getParameter("proceso").equals("SELLAR_VENTA")) {
            // Revisa si tiene permisos

            if (!idmod.equals("VEN_DEV")) // Si no es devolucion
            {
                if (!getSesion(request).getPermiso(idmod + "_AGREGAR")) {
                    idmensaje = 3;
                    mensaje += MsjPermisoDenegado(request, "CEF", idmod + "_AGREGAR");
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                            idmod + "_AGREGAR", idmod4 + "||||", mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                if (!getSesion(request).getPermiso("VEN_DEV_DEVOLVER")
                        && !getSesion(request).getPermiso("VEN_DEV_REBAJAR")) {
                    idmensaje = 3;
                    mensaje += MsjPermisoDenegado(request, "CEF", "VEN_DEV_DEVOLVER") + " / "
                            + MsjPermisoDenegado(request, "CEF", "VEN_DEV_REBAJAR");
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                            "VEN_DEV_DEVOLVER", "VDEV||||", mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            }

            if (request.getParameter("ID") != null) {
                String[] valoresParam = request.getParameterValues("ID");
                if (valoresParam.length == 1) {
                    if (setids.getAbsRow(0).getCFD() == false) {
                        idmensaje = 1;
                        mensaje += "PRECAUCION: Esta entidad de venta no est&aacute; establecida como CFDI. No se puede sellar el registro<br>";
                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    }

                    if (moddes.equals("FACTURAS")) {
                        JVentasFactSetV2 SetMod = new JVentasFactSetV2(request);
                        SetMod.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getTFD() == 3 || SetMod.getAbsRow(0).getStatus().equals("C")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Este registro ya est sellado o cancelado <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        StringBuffer sb_mensaje = new StringBuffer(254);
                        idmensaje = generarCFDI(request, response, "FACTURAS",
                                Integer.parseInt(request.getParameter("ID")),
                                Long.toString(SetMod.getAbsRow(0).getID_Cliente()), setids,
                                SetMod.getAbsRow(0).getTFD(), sb_mensaje);
                        mensaje = sb_mensaje.toString();

                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    } else if (moddes.equals("REMISIONES")) {
                        JVentasRemisionesSet SetMod = new JVentasRemisionesSet(request);
                        SetMod.m_Where = "ID_Remision = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getTFD() == 3 || SetMod.getAbsRow(0).getStatus().equals("C")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta remisi&oacute;n ya est&aacute; sellada o cancelada<br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        StringBuffer sb_mensaje = new StringBuffer(254);
                        idmensaje = generarCFDI(request, response, "REMISIONES",
                                Integer.parseInt(request.getParameter("ID")),
                                Long.toString(SetMod.getAbsRow(0).getID_Cliente()), setids,
                                SetMod.getAbsRow(0).getTFD(), sb_mensaje);
                        mensaje = sb_mensaje.toString();

                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    } else if (moddes.equals("DEVOLUCIONES")) {
                        JVentasDevolucionesSet SetMod = new JVentasDevolucionesSet(request);
                        SetMod.m_Where = "ID_Devolucion = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getTFD() == 3 || SetMod.getAbsRow(0).getStatus().equals("C")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Este registro ya esta sellado o cancelada<br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        StringBuffer sb_mensaje = new StringBuffer(254);
                        idmensaje = generarCFDI(request, response, "DEVOLUCIONES",
                                Integer.parseInt(request.getParameter("ID")),
                                Long.toString(SetMod.getAbsRow(0).getID_Cliente()), setids,
                                SetMod.getAbsRow(0).getTFD(), sb_mensaje);
                        mensaje = sb_mensaje.toString();

                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    } else
                        return;
                } else {
                    idmensaje = 1;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); //"PRECAUCION: Solo se permite consultar una pliza a la vez <br>";
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                idmensaje = 3;
                mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); //"PRECAUCION: Solo se permite consultar una pliza a la vez <br>";
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }
        } else if (request.getParameter("proceso").equals("XML_VENTA")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso(idmod)) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", idmod);
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), idmod,
                        idmod4 + "||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("ID") != null) {
                String[] valoresParam = request.getParameterValues("ID");
                if (valoresParam.length == 1) {
                    if (moddes.equals("FACTURAS")) {
                        JVentasFactSetV2 SetMod = new JVentasFactSetV2(request);
                        SetMod.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getTFD() != 3 || SetMod.getAbsRow(0).getID_CFD() == 0) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta factura no est&aacute; completamente sellada, no hay nada que bajar <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JCFDCompSet cfd = new JCFDCompSet(request, "VENTAS");
                        cfd.m_Where = "ID_CFD = '" + SetMod.getAbsRow(0).getID_CFD() + "'";
                        cfd.Open();

                        String nombre, destino;

                        if (cfd.getNumRows() > 0)
                            nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                    + "/ven/TFDs/" + cfd.getAbsRow(0).getUUID() + ".xml";
                        else // Es CFDI generado internamente
                        {
                            if (SetMod.getAbsRow(0).getStatus().equals("C"))
                                nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                        + "/TFDs/CANCEL_FAC-" + request.getParameter("ID") + ".xml";
                            else
                                nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                        + "/TFDs/SIGN_FAC-" + request.getParameter("ID") + ".xml";
                        }

                        destino = "FAC-" + SetMod.getAbsRow(0).getID_Entidad() + "-"
                                + SetMod.getAbsRow(0).getNumero() + ".xml";

                        JBajarArchivo fd = new JBajarArchivo();

                        fd.doDownload(response, getServletConfig().getServletContext(), nombre, destino);

                        idmensaje = 0;
                        mensaje = "La factura se bajo satisfactoriamente";
                        return;
                    } else if (moddes.equals("REMISIONES")) {
                        JVentasRemisionesSet SetMod = new JVentasRemisionesSet(request);
                        SetMod.m_Where = "ID_Remision = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getTFD() != 3 || SetMod.getAbsRow(0).getID_CFD() == 0) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta remisi&oacute;n no est&aacute; completamente sellada, no hay nada que bajar <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JCFDCompSet cfd = new JCFDCompSet(request, "VENTAS");
                        cfd.m_Where = "ID_CFD = '" + SetMod.getAbsRow(0).getID_CFD() + "'";
                        cfd.Open();

                        String nombre, destino;

                        if (cfd.getNumRows() > 0)
                            nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                    + "/ven/TFDs/" + cfd.getAbsRow(0).getUUID() + ".xml";
                        else {
                            if (SetMod.getAbsRow(0).getStatus().equals("C"))
                                nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                        + "/TFDs/CANCEL_REM-" + request.getParameter("ID") + ".xml";
                            else
                                nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                        + "/TFDs/SIGN_REM-" + request.getParameter("ID") + ".xml";
                        }

                        destino = "REM-" + SetMod.getAbsRow(0).getID_Entidad() + "-"
                                + SetMod.getAbsRow(0).getNumero() + ".xml";
                        JBajarArchivo fd = new JBajarArchivo();

                        fd.doDownload(response, getServletConfig().getServletContext(), nombre, destino);

                        idmensaje = 0;
                        mensaje = "La remisi&oacute;n se bajo satisfactoriamente";
                        return;
                    } else if (moddes.equals("DEVOLUCIONES")) {
                        JVentasDevolucionesSet SetMod = new JVentasDevolucionesSet(request);
                        SetMod.m_Where = "ID_Devolucion = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getTFD() != 3 || SetMod.getAbsRow(0).getID_CFD() == 0) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta dev no est&aacute; completamente sellada, no hay nada que bajar <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JCFDCompSet cfd = new JCFDCompSet(request, "VENTAS");
                        cfd.m_Where = "ID_CFD = '" + SetMod.getAbsRow(0).getID_CFD() + "'";
                        cfd.Open();

                        String nombre, destino;

                        if (cfd.getNumRows() > 0)
                            nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                    + "/ven/TFDs/" + cfd.getAbsRow(0).getUUID() + ".xml";
                        else {
                            if (SetMod.getAbsRow(0).getStatus().equals("C"))
                                nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                        + "/TFDs/CANCEL_DSV-" + request.getParameter("ID") + ".xml";
                            else
                                nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                        + "/TFDs/SIGN_DSV-" + request.getParameter("ID") + ".xml";
                        }

                        destino = "DSV-" + SetMod.getAbsRow(0).getID_Entidad() + "-"
                                + SetMod.getAbsRow(0).getNumero() + ".xml";
                        JBajarArchivo fd = new JBajarArchivo();

                        fd.doDownload(response, getServletConfig().getServletContext(), nombre, destino);

                        idmensaje = 0;
                        mensaje = "La devolucion se bajo satisfactoriamente";
                        return;
                    }
                } else {
                    idmensaje = 1;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); //"PRECAUCION: Solo se permite consultar una pliza a la vez <br>";
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                idmensaje = 3;
                mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); //"PRECAUCION: Solo se permite consultar una pliza a la vez <br>";
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

        } else if (request.getParameter("proceso").equals("ENVIAR_VENTA")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso(idmod)) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", idmod);
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), idmod,
                        idmod4 + "||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("ID") != null) {
                String[] valoresParam = request.getParameterValues("ID");
                if (valoresParam.length == 1) {
                    if (moddes.equals("FACTURAS")) {
                        JVentasFactSetV2 SetMod = new JVentasFactSetV2(request);
                        SetMod.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getTFD() != 3 || SetMod.getAbsRow(0).getID_Cliente() == 0) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta factura no est&aacute; completamente sellada, o es de mostrador. No hay nada que enviar <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JClientClientSetV2 set = new JClientClientSetV2(request);
                        set.m_Where = "Clave = '" + SetMod.getAbsRow(0).getID_Cliente() + "'";
                        set.Open();
                        if (set.getAbsRow(0).getSMTP() == 0) // Maneja smtp manual o automtico
                        {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Este cliente no esta confgurado para recibir sus cfdi por correo <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JFsiSMTPClient smtp = new JFsiSMTPClient();
                        smtp.enviarCFDIMPE(request, "FAC", request.getParameter("ID"), "",
                                set.getAbsRow(0).getNombre(), set.getAbsRow(0).getEMail());
                        if (smtp.getStatusSMTP() == JFsiSMTPClient.ERROR) {
                            idmensaje = 3;
                            mensaje += "ERROR: " + smtp.getError();
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        getSesion(request).setID_Mensaje((short) 0,
                                "El correo se ha mandado satisfactoriamente");
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    } else if (moddes.equals("REMISIONES")) {
                        JVentasRemisionesSet SetMod = new JVentasRemisionesSet(request);
                        SetMod.m_Where = "ID_Remision = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getTFD() != 3 || SetMod.getAbsRow(0).getID_Cliente() == 0) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta remision no est&aacute; completamente sellada, o es de mostrador. No hay nada que enviar <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JClientClientSetV2 set = new JClientClientSetV2(request);
                        set.m_Where = "Clave = '" + SetMod.getAbsRow(0).getID_Cliente() + "'";
                        set.Open();
                        if (set.getAbsRow(0).getSMTP() == 0) // Maneja smtp manual o automtico
                        {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Este cliente no esta confgurado para recibir sus cfdi por correo <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JFsiSMTPClient smtp = new JFsiSMTPClient();
                        smtp.enviarCFDIMPE(request, "REM", request.getParameter("ID"), "",
                                set.getAbsRow(0).getNombre(), set.getAbsRow(0).getEMail());
                        if (smtp.getStatusSMTP() == JFsiSMTPClient.ERROR) {
                            idmensaje = 3;
                            mensaje += "ERROR: " + smtp.getError();
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        getSesion(request).setID_Mensaje((short) 0,
                                "El correo se ha mandado satisfactoriamente");
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    } else if (moddes.equals("DEVOLUCIONES")) {
                        JVentasDevolucionesSet SetMod = new JVentasDevolucionesSet(request);
                        SetMod.m_Where = "ID_Devolucion = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getTFD() != 3 || SetMod.getAbsRow(0).getID_Cliente() == 0) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta devolucion/rebaja no est&aacute; completamente sellada, o es de mostrador. No hay nada que enviar <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JClientClientSetV2 set = new JClientClientSetV2(request);
                        set.m_Where = "Clave = '" + SetMod.getAbsRow(0).getID_Cliente() + "'";
                        set.Open();
                        if (set.getAbsRow(0).getSMTP() == 0) // Maneja smtp manual o automtico
                        {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Este cliente no esta confgurado para recibir sus cfdi por correo <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JFsiSMTPClient smtp = new JFsiSMTPClient();
                        smtp.enviarCFDIMPE(request, "DSV", request.getParameter("ID"), "",
                                set.getAbsRow(0).getNombre(), set.getAbsRow(0).getEMail());
                        if (smtp.getStatusSMTP() == JFsiSMTPClient.ERROR) {
                            idmensaje = 3;
                            mensaje += "ERROR: " + smtp.getError();
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        getSesion(request).setID_Mensaje((short) 0,
                                "El correo se ha mandado satisfactoriamente");
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    }
                } else {
                    idmensaje = 1;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); //"PRECAUCION: Solo se permite consultar una pliza a la vez <br>";
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                idmensaje = 3;
                mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); //"PRECAUCION: Solo se permite consultar una pliza a la vez <br>";
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

        } else if (request.getParameter("proceso").equals("PDF_VENTA")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso(idmod)) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", idmod);
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), idmod,
                        idmod4 + "||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("ID") != null) {
                String[] valoresParam = request.getParameterValues("ID");
                if (valoresParam.length == 1) {
                    if (moddes.equals("FACTURAS")) {
                        JVentasFactSetV2 SetMod = new JVentasFactSetV2(request);
                        SetMod.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getTFD() != 3 || SetMod.getAbsRow(0).getID_CFD() == 0) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta factura no esta completamente sellada, no hay nada que bajar <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JCFDCompSet cfd = new JCFDCompSet(request, "VENTAS");
                        cfd.m_Where = "ID_CFD = '" + SetMod.getAbsRow(0).getID_CFD() + "'";
                        cfd.Open();

                        String nombre, destino;

                        if (cfd.getNumRows() > 0)
                            nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                    + "/ven/PDFs/" + cfd.getAbsRow(0).getUUID() + ".pdf";
                        else
                            nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                    + "/PDFs/FAC-" + request.getParameter("ID") + ".pdf";

                        destino = "FAC-" + SetMod.getAbsRow(0).getID_Entidad() + "-"
                                + SetMod.getAbsRow(0).getNumero() + ".pdf";
                        JBajarArchivo fd = new JBajarArchivo();

                        fd.doDownload(response, getServletConfig().getServletContext(), nombre, destino);

                        idmensaje = 0;
                        mensaje = "La factura se bajo satisfactoriamente";
                        return;
                    } else if (moddes.equals("REMISIONES")) {
                        JVentasRemisionesSet SetMod = new JVentasRemisionesSet(request);
                        SetMod.m_Where = "ID_Remision = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getTFD() != 3 || SetMod.getAbsRow(0).getID_CFD() == 0) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta remisi&oacute;n no est&aacute; completamente sellada, no hay nada que bajar <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JCFDCompSet cfd = new JCFDCompSet(request, "VENTAS");
                        cfd.m_Where = "ID_CFD = '" + SetMod.getAbsRow(0).getID_CFD() + "'";
                        cfd.Open();

                        String nombre, destino;

                        if (cfd.getNumRows() > 0)
                            nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                    + "/ven/PDFs/" + cfd.getAbsRow(0).getUUID() + ".pdf";
                        else
                            nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                    + "/PDFs/REM-" + request.getParameter("ID") + ".pdf";

                        destino = "REM-" + SetMod.getAbsRow(0).getID_Entidad() + "-"
                                + SetMod.getAbsRow(0).getNumero() + ".pdf";
                        JBajarArchivo fd = new JBajarArchivo();

                        fd.doDownload(response, getServletConfig().getServletContext(), nombre, destino);

                        idmensaje = 0;
                        mensaje = "La remisi&oacute;n se bajo satisfactoriamente";
                        return;
                    } else if (moddes.equals("DEVOLUCIONES")) {
                        JVentasDevolucionesSet SetMod = new JVentasDevolucionesSet(request);
                        SetMod.m_Where = "ID_Devolucion = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getTFD() != 3 || SetMod.getAbsRow(0).getID_CFD() == 0) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta devolucion no esta completamente sellada, no hay nada que bajar <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        JCFDCompSet cfd = new JCFDCompSet(request, "VENTAS");
                        cfd.m_Where = "ID_CFD = '" + SetMod.getAbsRow(0).getID_CFD() + "'";
                        cfd.Open();

                        String nombre, destino;

                        if (cfd.getNumRows() > 0)
                            nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                    + "/ven/PDFs/" + cfd.getAbsRow(0).getUUID() + ".pdf";
                        else
                            nombre = "/usr/local/forseti/emp/" + getSesion(request).getBDCompania()
                                    + "/PDFs/DSV-" + request.getParameter("ID") + ".pdf";

                        destino = "DSV-" + SetMod.getAbsRow(0).getID_Entidad() + "-"
                                + SetMod.getAbsRow(0).getNumero() + ".pdf";
                        JBajarArchivo fd = new JBajarArchivo();

                        fd.doDownload(response, getServletConfig().getServletContext(), nombre, destino);

                        idmensaje = 0;
                        mensaje = "La devolucion se bajo satisfactoriamente";
                        return;
                    }
                } else {
                    idmensaje = 1;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); //"PRECAUCION: Solo se permite consultar una pliza a la vez <br>";
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                idmensaje = 3;
                mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); //"PRECAUCION: Solo se permite consultar una pliza a la vez <br>";
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

        } else if (request.getParameter("proceso").equals("CAMBIAR_VENTA")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso(idmod + "_CAMBIAR")) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", idmod + "_CAMBIAR");
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                        idmod + "_CAMBIAR", idmod4 + "||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("subproceso") == null) // Como el subproceso no es ENVIAR ni AGR_PART ni EDIT_PART ni BORR_PART, abre la ventana del proceso de AGREGADO para agregar `por primera vez
            {
                if (request.getParameter("ID") != null) {
                    String[] valoresParam = request.getParameterValues("ID");
                    if (valoresParam.length == 1) {
                        if (moddes.equals("PEDIDOS")) {
                            JVentasPedidosSet SetMod = new JVentasPedidosSet(request);
                            SetMod.m_Where = "ID_Pedido = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Este pedido ya esta cancelado, no se puede cambiar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                            if (SetMod.getAbsRow(0).getStatus().equals("F")
                                    || SetMod.getAbsRow(0).getStatus().equals("N")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Este pedido ya tiene una factura asociada, no se puede cambiar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                        } else if (moddes.equals("COTIZACIONES")) {
                            JVentasCotizacionesSet SetMod = new JVentasCotizacionesSet(request);
                            SetMod.m_Where = "ID_Cotizacion = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta cotizaci&oacute;n ya esta cancelada, no se puede cambiar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                            if (SetMod.getAbsRow(0).getStatus().equals("F")
                                    || SetMod.getAbsRow(0).getStatus().equals("N")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta cotizaci&oacute;n ya tiene un pedido, remisi&oacute;n o factura asociada, no se puede cambiar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                        } else // sale si no es ni pedido ni cotizacion porque seria factura o remision ( se estaria violando la seguridad )
                            return;

                        HttpSession ses = request.getSession(true);
                        JVenFactSes rec = (JVenFactSes) ses.getAttribute("ven_fact_dlg");
                        if (rec == null) {
                            rec = new JVenFactSes(request, getSesion(request).getSesion(idmod).getEspecial(),
                                    usuario, moddes);
                            ses.setAttribute("ven_fact_dlg", rec);
                        } else {
                            rec.resetear(request, getSesion(request).getSesion(idmod).getEspecial(), usuario,
                                    moddes);
                        }

                        // Llena el pedido o cotizacion
                        if (moddes.equals("PEDIDOS")) {
                            JVentasPedidosSet SetMod = new JVentasPedidosSet(request);
                            SetMod.m_Where = "ID_Pedido = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            // checa si se permite la 
                            rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                            rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                            rec.setFecha(SetMod.getAbsRow(0).getFecha());
                            rec.setNombre(SetMod.getAbsRow(0).getCliente());
                            rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                            rec.setTC(SetMod.getAbsRow(0).getTC());
                            rec.setTotal(SetMod.getAbsRow(0).getTotal());
                            rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                            rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                            rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                            rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                        } else if (moddes.equals("COTIZACIONES")) {
                            JVentasCotizacionesSet SetMod = new JVentasCotizacionesSet(request);
                            SetMod.m_Where = "ID_Cotizacion = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            // checa si se permite la 
                            rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                            rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                            rec.setFecha(SetMod.getAbsRow(0).getFecha());
                            rec.setNombre(SetMod.getAbsRow(0).getCliente());
                            rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                            rec.setTC(SetMod.getAbsRow(0).getTC());
                            rec.setTotal(SetMod.getAbsRow(0).getTotal());
                            rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                            rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                            rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                            rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                        }
                        JVentasFactSetCabV2 SetCab = new JVentasFactSetCabV2(request,
                                request.getParameter("tipomov"));
                        JVentasFactSetDetV2 SetDet = new JVentasFactSetDetV2(request,
                                request.getParameter("tipomov"));
                        SetCab.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetDet.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetCab.Open();
                        SetDet.Open();

                        rec.setMoneda(SetCab.getAbsRow(0).getMoneda());
                        rec.setNumero((int) SetCab.getAbsRow(0).getNumero());
                        rec.setColonia(SetCab.getAbsRow(0).getColonia());
                        if (SetCab.getAbsRow(0).getCondicion() == 0)
                            rec.setForma_Pago("contado");
                        else if (SetCab.getAbsRow(0).getCondicion() == 1)
                            rec.setForma_Pago("credito");
                        else
                            rec.setForma_Pago("ninguno");
                        rec.setCP(SetCab.getAbsRow(0).getCP());
                        rec.setDescuento(SetCab.getAbsRow(0).getDescuento());
                        rec.setDireccion(SetCab.getAbsRow(0).getDireccion());
                        rec.setImporte(SetCab.getAbsRow(0).getImporte());
                        rec.setIVA(SetCab.getAbsRow(0).getIVA());
                        rec.setIEPS(SetCab.getAbsRow(0).getIEPS());
                        rec.setIVARet(SetCab.getAbsRow(0).getIVARet());
                        rec.setISRRet(SetCab.getAbsRow(0).getISRRet());
                        rec.setObs(SetCab.getAbsRow(0).getObs());
                        rec.setPoblacion(SetCab.getAbsRow(0).getPoblacion());
                        rec.setRFC(SetCab.getAbsRow(0).getRFC());
                        rec.setSubTotal(SetCab.getAbsRow(0).getSubTotal());
                        rec.setTels(SetCab.getAbsRow(0).getTel());
                        rec.setID_Bodega(SetCab.getAbsRow(0).getID_Bodega());
                        rec.setBodegaDesc(SetCab.getAbsRow(0).getNombre());

                        for (int i = 0; i < SetDet.getNumRows(); i++) {
                            rec.agregaPartida(SetDet.getAbsRow(i).getCantidad(),
                                    SetDet.getAbsRow(i).getID_UnidadSalida(), SetDet.getAbsRow(i).getID_Prod(),
                                    SetDet.getAbsRow(i).getID_Prod(), SetDet.getAbsRow(i).getDescripcion(),
                                    SetDet.getAbsRow(i).getPrecio(), SetDet.getAbsRow(i).getImporte(),
                                    SetDet.getAbsRow(i).getDescuento(), SetDet.getAbsRow(i).getIVA(),
                                    SetDet.getAbsRow(i).getIEPS(), SetDet.getAbsRow(i).getIVARet(),
                                    SetDet.getAbsRow(i).getISRRet(), SetDet.getAbsRow(i).getImporteDesc(),
                                    SetDet.getAbsRow(i).getImporteIVA(), SetDet.getAbsRow(i).getImporteIEPS(),
                                    SetDet.getAbsRow(i).getImporteIVARet(),
                                    SetDet.getAbsRow(i).getImporteISRRet(), SetDet.getAbsRow(i).getTotalPart(),
                                    SetDet.getAbsRow(i).getObs(), SetDet.getAbsRow(i).getID_Tipo());
                        }

                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                        return;
                    } else {
                        idmensaje = 1;
                        mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2);
                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    }
                } else {
                    idmensaje = 3;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1);
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                // Solicitud de envio a procesar
                if (request.getParameter("subproceso").equals("ENVIAR")) {
                    if (AgregarCabecero(request, response) == -1) {
                        if (VerificarParametros(request, response)) {
                            // establece los atributos por default para ventas de crdito
                            request.setAttribute("fsipg_cambio", 0F);
                            request.setAttribute("fsipg_efectivo", 0F);
                            request.setAttribute("fsipg_bancos", 0F);
                            Cambiar(request, response, moddes, idmod, idmod4);
                            return;
                        }

                    }

                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;
                } else if (request.getParameter("subproceso").equals("AGR_CLIENT")) {
                    AgregarCabecero(request, response);
                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;
                } else if (request.getParameter("subproceso").equals("AGR_PART")) {
                    if (AgregarCabecero(request, response) == -1) {
                        if (VerificarParametrosPartida(request, response))
                            AgregarPartida(request, response);
                    }

                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;
                } else if (request.getParameter("subproceso").equals("EDIT_PART")) {
                    if (AgregarCabecero(request, response) == -1) {
                        if (VerificarParametrosPartida(request, response))
                            EditarPartida(request, response);
                    }

                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;
                } else if (request.getParameter("subproceso").equals("BORR_PART")) {
                    if (AgregarCabecero(request, response) == -1) {
                        BorrarPartida(request, response);
                    }

                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;
                }
            }

        } else if (request.getParameter("proceso").equals("CONSULTAR_VENTA")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso(idmod)) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", idmod);
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), idmod,
                        idmod4 + "||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("ID") != null) {
                String[] valoresParam = request.getParameterValues("ID");
                if (valoresParam.length == 1) {

                    HttpSession ses = request.getSession(true);
                    JVenFactSes rec = (JVenFactSes) ses.getAttribute("ven_fact_dlg");
                    if (rec == null) {
                        rec = new JVenFactSes(request, getSesion(request).getSesion(idmod).getEspecial(),
                                usuario, moddes);
                        ses.setAttribute("ven_fact_dlg", rec);
                    } else
                        rec.resetear(request, getSesion(request).getSesion(idmod).getEspecial(), usuario,
                                moddes);

                    // Llena la factura
                    if (moddes.equals("FACTURAS")) {
                        JVentasFactSetV2 SetMod = new JVentasFactSetV2(request);
                        SetMod.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();
                        rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                        rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                        rec.setFecha(SetMod.getAbsRow(0).getFecha());
                        rec.setNombre(SetMod.getAbsRow(0).getCliente());
                        rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                        rec.setTC(SetMod.getAbsRow(0).getTC());
                        rec.setTotal(SetMod.getAbsRow(0).getTotal());
                        rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                        rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                        rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                        rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                    } else if (moddes.equals("PEDIDOS")) {
                        JVentasPedidosSet SetMod = new JVentasPedidosSet(request);
                        SetMod.m_Where = "ID_Pedido = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();
                        rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                        rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                        rec.setFecha(SetMod.getAbsRow(0).getFecha());
                        rec.setNombre(SetMod.getAbsRow(0).getCliente());
                        rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                        rec.setTC(SetMod.getAbsRow(0).getTC());
                        rec.setTotal(SetMod.getAbsRow(0).getTotal());
                        rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                        rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                        rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                        rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                    } else if (moddes.equals("REMISIONES")) {
                        JVentasRemisionesSet SetMod = new JVentasRemisionesSet(request);
                        SetMod.m_Where = "ID_Remision = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();
                        rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                        rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                        rec.setFecha(SetMod.getAbsRow(0).getFecha());
                        rec.setNombre(SetMod.getAbsRow(0).getCliente());
                        rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                        rec.setTC(SetMod.getAbsRow(0).getTC());
                        rec.setTotal(SetMod.getAbsRow(0).getTotal());
                        rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                        rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                        rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                        rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                    } else if (moddes.equals("COTIZACIONES")) {
                        JVentasCotizacionesSet SetMod = new JVentasCotizacionesSet(request);
                        SetMod.m_Where = "ID_Cotizacion = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();
                        rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                        rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                        rec.setFecha(SetMod.getAbsRow(0).getFecha());
                        rec.setNombre(SetMod.getAbsRow(0).getCliente());
                        rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                        rec.setTC(SetMod.getAbsRow(0).getTC());
                        rec.setTotal(SetMod.getAbsRow(0).getTotal());
                        rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                        rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                        rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                        rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                    } else if (moddes.equals("DEVOLUCIONES")) {
                        JVentasDevolucionesSet SetMod = new JVentasDevolucionesSet(request);
                        SetMod.m_Where = "ID_Devolucion = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();
                        rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                        rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                        rec.setFecha(SetMod.getAbsRow(0).getFecha());
                        rec.setNombre(SetMod.getAbsRow(0).getCliente());
                        rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                        rec.setTC(SetMod.getAbsRow(0).getTC());
                        rec.setTotal(SetMod.getAbsRow(0).getTotal());
                        rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                        rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                        rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                        rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                    }

                    JVentasFactSetCabV2 SetCab = new JVentasFactSetCabV2(request, moddes);
                    JVentasFactSetDetV2 SetDet = new JVentasFactSetDetV2(request, moddes);
                    SetCab.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                    SetDet.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                    SetCab.Open();
                    SetDet.Open();

                    rec.setMoneda(SetCab.getAbsRow(0).getMoneda());
                    rec.setNumero((int) SetCab.getAbsRow(0).getNumero());
                    rec.setColonia(SetCab.getAbsRow(0).getColonia());
                    if (SetCab.getAbsRow(0).getCondicion() == 0)
                        rec.setForma_Pago("contado");
                    else if (SetCab.getAbsRow(0).getCondicion() == 1)
                        rec.setForma_Pago("credito");
                    else
                        rec.setForma_Pago("ninguno");
                    rec.setCP(SetCab.getAbsRow(0).getCP());
                    rec.setDescuento(SetCab.getAbsRow(0).getDescuento());
                    rec.setDireccion(SetCab.getAbsRow(0).getDireccion());
                    rec.setImporte(SetCab.getAbsRow(0).getImporte());
                    rec.setIVA(SetCab.getAbsRow(0).getIVA());
                    rec.setIEPS(SetCab.getAbsRow(0).getIEPS());
                    rec.setIVARet(SetCab.getAbsRow(0).getIVARet());
                    rec.setISRRet(SetCab.getAbsRow(0).getISRRet());
                    rec.setObs(SetCab.getAbsRow(0).getObs());
                    rec.setPoblacion(SetCab.getAbsRow(0).getPoblacion());
                    rec.setRFC(SetCab.getAbsRow(0).getRFC());
                    rec.setSubTotal(SetCab.getAbsRow(0).getSubTotal());
                    rec.setTels(SetCab.getAbsRow(0).getTel());
                    rec.setID_Bodega(SetCab.getAbsRow(0).getID_Bodega());
                    rec.setBodegaDesc(SetCab.getAbsRow(0).getNombre());

                    for (int i = 0; i < SetDet.getNumRows(); i++) {
                        rec.agregaPartida(SetDet.getAbsRow(i).getCantidad(),
                                SetDet.getAbsRow(i).getID_UnidadSalida(), SetDet.getAbsRow(i).getID_Prod(),
                                SetDet.getAbsRow(i).getID_Prod(), SetDet.getAbsRow(i).getDescripcion(),
                                SetDet.getAbsRow(i).getPrecio(), SetDet.getAbsRow(i).getImporte(),
                                SetDet.getAbsRow(i).getDescuento(), SetDet.getAbsRow(i).getIVA(),
                                SetDet.getAbsRow(i).getIEPS(), SetDet.getAbsRow(i).getIVARet(),
                                SetDet.getAbsRow(i).getISRRet(), SetDet.getAbsRow(i).getImporteDesc(),
                                SetDet.getAbsRow(i).getImporteIVA(), SetDet.getAbsRow(i).getImporteIEPS(),
                                SetDet.getAbsRow(i).getImporteIVARet(), SetDet.getAbsRow(i).getImporteISRRet(),
                                SetDet.getAbsRow(i).getTotalPart(), SetDet.getAbsRow(i).getObs(),
                                SetDet.getAbsRow(i).getID_Tipo());
                    }

                    RDP("CEF", getSesion(request).getConBD(), "OK", getSesion(request).getID_Usuario(), idmod,
                            idmod4 + "|" + request.getParameter("ID") + "|"
                                    + getSesion(request).getSesion(idmod).getEspecial() + "||",
                            "");
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;
                } else {
                    idmensaje = 1;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2);
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                idmensaje = 3;
                mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1);
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

        } else if (request.getParameter("proceso").equals("CANCELAR_VENTA")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso(idmod + "_CANCELAR")) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", idmod + "_CANCELAR");
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                        idmod + "_CANCELAR", idmod4 + "||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("ID") != null) {
                String[] valoresParam = request.getParameterValues("ID");
                if (valoresParam.length == 1) {
                    if (moddes.equals("COTIZACIONES")) {
                        JVentasCotizacionesSet SetMod = new JVentasCotizacionesSet(request);
                        SetMod.m_Where = "ID_Cotizacion = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta cotizaci&oacute;n ya est&aacute; cancelada <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        } else if (SetMod.getAbsRow(0).getStatus().equals("F")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta cotizaci&oacute;n ya tiene un pedido, remisi&oacute;n o factura asociada, no se puede cancelar. Primero debes cancelar el pedido, remisi&oacute;n o factura para poder cancelar la cotizaci&oacute;n <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        } else {
                            CancelarFactura(request, response, "COTIZACIONES", idmod, idmod4,
                                    new StringBuffer());
                            return;
                        }
                    } else if (moddes.equals("PEDIDOS")) {
                        JVentasPedidosSet SetMod = new JVentasPedidosSet(request);
                        SetMod.m_Where = "ID_Pedido = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Este pedido ya est cancelado <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        } else if (SetMod.getAbsRow(0).getStatus().equals("F")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Este pedido ya tiene una factura o remisin asociada, no se puede cancelar. Primero debes cancelar la factura o remision para poder cancelar el pedido <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        } else {
                            CancelarFactura(request, response, "PEDIDOS", idmod, idmod4, new StringBuffer());
                            return;
                        }
                    } else if (moddes.equals("REMISIONES")) {
                        JVentasRemisionesSet SetMod = new JVentasRemisionesSet(request);
                        SetMod.m_Where = "ID_Remision = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta remisi&oacute;n ya esta cancelada <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        } else if (SetMod.getAbsRow(0).getID_Factura() != 0) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta remisi&oacute;n ya tiene una factura asociada. No se puede cancelar, primero cancela la factura para poder cancelar la remisin <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        } else if (!setids.getAbsRow(0).getFijaCost() && setids.getAbsRow(0).getAuditarAlm()
                                && !SetMod.getAbsRow(0).getStatus().equals("R")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta remisi&oacute;n necesita estar revertida desde el m&oacute;dulo del almac&eacute;n para poder cancelarla <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        } else {
                            StringBuffer sb_mensaje = new StringBuffer();
                            int idms = cancelarCFDI(request, response, "REMISIONES",
                                    Integer.parseInt(request.getParameter("ID")), SetMod.getAbsRow(0).getTFD(),
                                    sb_mensaje);
                            if (idms == JForsetiCFD.ERROR) // quiere decir algun tipo de error de cfd
                            {
                                idmensaje = 3;
                                mensaje += sb_mensaje.toString();
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            } else {
                                CancelarFactura(request, response, "REMISIONES", idmod, idmod4, sb_mensaje);
                                return;
                            }

                        }
                    }
                    if (moddes.equals("FACTURAS")) {
                        JVentasFactSetV2 SetMod = new JVentasFactSetV2(request);
                        SetMod.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();
                        JVentasRemisionesSet SetRem = new JVentasRemisionesSet(request);
                        SetRem.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetRem.Open();
                        JVentasDevolucionesSet SetDev = new JVentasDevolucionesSet(request);
                        SetDev.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetDev.Open();

                        if (SetDev.getNumRows() > 0) {
                            for (int i = 0; i < SetDev.getNumRows(); i++) {
                                if (!SetDev.getAbsRow(i).getStatus().equals("C")) {
                                    idmensaje = 1;
                                    mensaje += "PRECAUCION: Esta factura tiene devoluciones asociadas sin cancelar. Primero debes cancelar las devoluciones asociadas para poder cancelar la factura <br>";
                                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                    return;
                                }
                            }
                        }
                        if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta factura ya est cancelada <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        } else if (SetRem.getNumRows() == 0 && SetMod.getAbsRow(0).getID_PolCost() != -1
                                && !setids.getAbsRow(0).getFijaCost() && setids.getAbsRow(0).getAuditarAlm()
                                && !SetMod.getAbsRow(0).getStatus().equals("R")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta factura necesita estar revertida desde el mdulo del almacn para poder cancelarla <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        } else {
                            StringBuffer sb_mensaje = new StringBuffer();
                            int idms = cancelarCFDI(request, response, "FACTURAS",
                                    Integer.parseInt(request.getParameter("ID")), SetMod.getAbsRow(0).getTFD(),
                                    sb_mensaje);
                            if (idms == JForsetiCFD.ERROR) // quiere decir algun tipo de error de cfd
                            {
                                idmensaje = 3;
                                mensaje += sb_mensaje.toString();
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            } else {
                                CancelarFactura(request, response, "FACTURAS", idmod, idmod4, sb_mensaje);
                                return;
                            }
                        }
                    } else if (moddes.equals("DEVOLUCIONES")) {
                        JVentasDevolucionesSet SetMod = new JVentasDevolucionesSet(request);
                        SetMod.m_Where = "ID_Devolucion = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta devoluci&oacute;n ya est&aacute; cancelada <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        } else if (SetMod.getAbsRow(0).getDevReb().equals("DEV")
                                && !setids.getAbsRow(0).getFijaCost() && setids.getAbsRow(0).getAuditarAlm()
                                && !SetMod.getAbsRow(0).getStatus().equals("R")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta devoluci&oacute;n necesita estar revertida desde el mdulo del almacn para poder cancelarla <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        } else {
                            StringBuffer sb_mensaje = new StringBuffer();
                            int idms = cancelarCFDI(request, response, "DEVOLUCIONES",
                                    Integer.parseInt(request.getParameter("ID")), SetMod.getAbsRow(0).getTFD(),
                                    sb_mensaje);
                            if (idms == JForsetiCFD.ERROR) // quiere decir algun tipo de error de cfd
                            {
                                idmensaje = 3;
                                mensaje += sb_mensaje.toString();
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            } else {
                                CancelarFactura(request, response, "DEVOLUCIONES", idmod, idmod4, sb_mensaje);
                                return;
                            }
                        }

                    }

                } else {
                    idmensaje = 1;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2);
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                idmensaje = 3;
                mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1);
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

        } else if (request.getParameter("proceso").equals("FACTURAR_VENTA")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso("VEN_FAC_AGREGAR")) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", "VEN_FAC_AGREGAR");
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                        "VEN_FAC_AGREGAR", "VFAC||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("subproceso") == null) // Como el subproceso no es ENVIAR, abre la ventana del proceso de FACTURADO por primera vez
            {
                if (request.getParameter("ID") != null) {
                    String[] valoresParam = request.getParameterValues("ID");
                    if (valoresParam.length == 1) {
                        if (moddes.equals("PEDIDOS")) {
                            JVentasPedidosSet SetMod = new JVentasPedidosSet(request);
                            SetMod.m_Where = "ID_Pedido = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Este pedido ya esta cancelado, no se puede facturar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                            if (SetMod.getAbsRow(0).getStatus().equals("F")
                                    || SetMod.getAbsRow(0).getStatus().equals("N")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Este pedido ya tiene una remisi&oacute;n o factura asociada, no se puede facturar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                        } else if (moddes.equals("REMISIONES")) {
                            JVentasRemisionesSet SetMod = new JVentasRemisionesSet(request);
                            SetMod.m_Where = "ID_Remision = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta remisi&oacute;n ya esta cancelada, no se puede facturar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                            if (SetMod.getAbsRow(0).getStatus().equals("F")
                                    || SetMod.getAbsRow(0).getStatus().equals("R")
                                    || SetMod.getAbsRow(0).getFactura() != 0) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta remisi&oacute;n ya tiene una factura asociada o est&aacute; revertida, no se puede facturar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                        } else if (request.getParameter("tipomov").equals("COTIZACIONES")) {
                            JVentasCotizacionesSet SetMod = new JVentasCotizacionesSet(request);
                            SetMod.m_Where = "ID_Cotizacion = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta cotizaci&oacute;n ya esta cancelada, no se puede facturar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                            if (SetMod.getAbsRow(0).getStatus().equals("F")
                                    || SetMod.getAbsRow(0).getStatus().equals("N")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta cotizaci&oacute;n ya tiene un pedido, remisi&oacute;n o factura asociada, no se puede facturar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                        } else // sale si no es ni pedido ni cotizacion porque seria factura ( se estaria violando la seguridad )
                            return;

                        HttpSession ses = request.getSession(true);
                        JVenFactSes rec = (JVenFactSes) ses.getAttribute("ven_fact_dlg");
                        if (rec == null) {
                            rec = new JVenFactSes(request, getSesion(request).getSesion(idmod).getEspecial(),
                                    usuario, "FACTURAS");
                            ses.setAttribute("ven_fact_dlg", rec);
                        } else {
                            rec.resetear(request, getSesion(request).getSesion(idmod).getEspecial(), usuario,
                                    "FACTURAS");
                        }

                        // Llena la factura
                        if (moddes.equals("PEDIDOS")) {
                            JVentasPedidosSet SetMod = new JVentasPedidosSet(request);
                            SetMod.m_Where = "ID_Pedido = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            //rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                            rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                            rec.setFecha(SetMod.getAbsRow(0).getFecha());
                            rec.setNombre(SetMod.getAbsRow(0).getCliente());
                            rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                            rec.setTC(SetMod.getAbsRow(0).getTC());
                            rec.setTotal(SetMod.getAbsRow(0).getTotal());
                            rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                            rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                            rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                            rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                        } else if (moddes.equals("REMISIONES")) {
                            JVentasRemisionesSet SetMod = new JVentasRemisionesSet(request);
                            SetMod.m_Where = "ID_Remision = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            //rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                            rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                            rec.setFecha(SetMod.getAbsRow(0).getFecha());
                            rec.setNombre(SetMod.getAbsRow(0).getCliente());
                            rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                            rec.setTC(SetMod.getAbsRow(0).getTC());
                            rec.setTotal(SetMod.getAbsRow(0).getTotal());
                            rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                            rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                            rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                            rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                        } else if (moddes.equals("COTIZACIONES")) {
                            JVentasCotizacionesSet SetMod = new JVentasCotizacionesSet(request);
                            SetMod.m_Where = "ID_Cotizacion = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            //rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                            rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                            rec.setFecha(SetMod.getAbsRow(0).getFecha());
                            rec.setNombre(SetMod.getAbsRow(0).getCliente());
                            rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                            rec.setTC(SetMod.getAbsRow(0).getTC());
                            rec.setTotal(SetMod.getAbsRow(0).getTotal());
                            rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                            rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                            rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                            rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                        }
                        JVentasFactSetCabV2 SetCab = new JVentasFactSetCabV2(request,
                                request.getParameter("tipomov"));
                        JVentasFactSetDetV2 SetDet = new JVentasFactSetDetV2(request,
                                request.getParameter("tipomov"));
                        SetCab.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetDet.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetCab.Open();
                        SetDet.Open();

                        rec.setMoneda(SetCab.getAbsRow(0).getMoneda());
                        rec.setNumero((int) SetCab.getAbsRow(0).getNumero());
                        rec.setColonia(SetCab.getAbsRow(0).getColonia());
                        if (SetCab.getAbsRow(0).getCondicion() == 0)
                            rec.setForma_Pago("contado");
                        else if (SetCab.getAbsRow(0).getCondicion() == 1)
                            rec.setForma_Pago("credito");
                        else
                            rec.setForma_Pago("ninguno");
                        rec.setCP(SetCab.getAbsRow(0).getCP());
                        rec.setDescuento(SetCab.getAbsRow(0).getDescuento());
                        rec.setDireccion(SetCab.getAbsRow(0).getDireccion());
                        rec.setImporte(SetCab.getAbsRow(0).getImporte());
                        rec.setIVA(SetCab.getAbsRow(0).getIVA());
                        rec.setIEPS(SetCab.getAbsRow(0).getIEPS());
                        rec.setIVARet(SetCab.getAbsRow(0).getIVARet());
                        rec.setISRRet(SetCab.getAbsRow(0).getISRRet());
                        rec.setPoblacion(SetCab.getAbsRow(0).getPoblacion());
                        rec.setRFC(SetCab.getAbsRow(0).getRFC());
                        rec.setSubTotal(SetCab.getAbsRow(0).getSubTotal());
                        rec.setTels(SetCab.getAbsRow(0).getTel());
                        rec.setID_Bodega(SetCab.getAbsRow(0).getID_Bodega());
                        rec.setBodegaDesc(SetCab.getAbsRow(0).getNombre());

                        for (int i = 0; i < SetDet.getNumRows(); i++) {
                            rec.agregaPartida(SetDet.getAbsRow(i).getCantidad(),
                                    SetDet.getAbsRow(i).getID_UnidadSalida(), SetDet.getAbsRow(i).getID_Prod(),
                                    SetDet.getAbsRow(i).getID_Prod(), SetDet.getAbsRow(i).getDescripcion(),
                                    SetDet.getAbsRow(i).getPrecio(), SetDet.getAbsRow(i).getImporte(),
                                    SetDet.getAbsRow(i).getDescuento(), SetDet.getAbsRow(i).getIVA(),
                                    SetDet.getAbsRow(i).getIEPS(), SetDet.getAbsRow(i).getIVARet(),
                                    SetDet.getAbsRow(i).getISRRet(), SetDet.getAbsRow(i).getImporteDesc(),
                                    SetDet.getAbsRow(i).getImporteIVA(), SetDet.getAbsRow(i).getImporteIEPS(),
                                    SetDet.getAbsRow(i).getImporteIVARet(),
                                    SetDet.getAbsRow(i).getImporteISRRet(), SetDet.getAbsRow(i).getTotalPart(),
                                    SetDet.getAbsRow(i).getObs(), SetDet.getAbsRow(i).getID_Tipo());
                        }

                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/ventas/ven_fact_dlg_generar.jsp", request, response);
                        return;
                    } else {
                        idmensaje = 1;
                        mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2);
                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    }
                } else {
                    idmensaje = 3;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1);
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                // Solicitud de envio a procesar
                if (request.getParameter("subproceso").equals("ENVIAR")) {
                    if (moddes.equals("PEDIDOS") || moddes.equals("COTIZACIONES")
                            || moddes.equals("REMISIONES")) {
                        HttpSession ses = request.getSession(true);
                        JVenFactSes rec = (JVenFactSes) ses.getAttribute("ven_fact_dlg");

                        if (request.getParameter("fecha") == null || request.getParameter("referencia") == null
                                || request.getParameter("fecha").equals("")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Se debe enviar la fecha y referencia de la factura <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/ventas/ven_fact_dlg_generar.jsp", request, response);
                            return;
                        } else if (request.getParameter("forma_pago").equals("contado")) {
                            request.setAttribute("fsipg_tipo", "ventas");
                            request.setAttribute("fsipg_proc", "deposito");
                            request.setAttribute("fsipg_total", rec.getTotal());
                            request.setAttribute("fsipg_ident",
                                    getSesion(request).getSesion(idmod).getEspecial());

                            if (VerificarParametros(request, response)
                                    && VerificarPagoMult(request, response)) {
                                AgregarDesde(request, response, "VFAC", "VEN_FAC", request.getParameter("ID"),
                                        idmod4, idmod, setids);
                                return;
                            }
                            irApag("/forsetiweb/ventas/ven_fact_dlg_generar.jsp", request, response);
                            return;
                        } else {
                            if (VerificarParametros(request, response)) {
                                // establece los atributos por default para ventas de crdito
                                request.setAttribute("fsipg_cambio", 0F);
                                request.setAttribute("fsipg_efectivo", 0F);
                                request.setAttribute("fsipg_bancos", 0F);
                                AgregarDesde(request, response, "VFAC", "VEN_FACT", request.getParameter("ID"),
                                        idmod4, idmod, setids);
                                return;
                            }
                            irApag("/forsetiweb/ventas/ven_fact_dlg_generar.jsp", request, response);
                            return;
                        }
                    }

                }
            }

        } else if (request.getParameter("proceso").equals("REMISIONAR_VENTA")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso("VEN_REM_AGREGAR")) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", "VEN_REM_AGREGAR");
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                        "VEN_REM_AGREGAR", "VREM||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("subproceso") == null) // Como el subproceso no es ENVIAR, abre la ventana del proceso de FACTURADO por primera vez
            {
                if (request.getParameter("ID") != null) {
                    String[] valoresParam = request.getParameterValues("ID");
                    if (valoresParam.length == 1) {
                        if (moddes.equals("PEDIDOS")) {
                            JVentasPedidosSet SetMod = new JVentasPedidosSet(request);
                            SetMod.m_Where = "ID_Pedido = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Este pedido ya esta cancelado, no se puede remisionar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                            if (SetMod.getAbsRow(0).getStatus().equals("F")
                                    || SetMod.getAbsRow(0).getStatus().equals("N")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Este pedido ya tiene una factura o remisi&oacute;n asociada, no se puede a remisionar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                        } else if (moddes.equals("COTIZACIONES")) {
                            JVentasCotizacionesSet SetMod = new JVentasCotizacionesSet(request);
                            SetMod.m_Where = "ID_Cotizacion = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta cotizaci&oacute;n ya esta cancelada, no se puede remisionar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                            if (SetMod.getAbsRow(0).getStatus().equals("F")
                                    || SetMod.getAbsRow(0).getStatus().equals("N")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta cotizaci&oacute;n ya tiene un pedido, remisi&oacute;n o factura asociada, no se puede remisionar <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                        } else // sale si no es ni pedido ni cotizacion porque seria factura ( se estaria violando la seguridad )
                            return;

                        HttpSession ses = request.getSession(true);
                        JVenFactSes rec = (JVenFactSes) ses.getAttribute("ven_fact_dlg");
                        if (rec == null) {
                            rec = new JVenFactSes(request, getSesion(request).getSesion(idmod).getEspecial(),
                                    usuario, "REMISIONES");
                            ses.setAttribute("ven_fact_dlg", rec);
                        } else {
                            rec.resetear(request, getSesion(request).getSesion(idmod).getEspecial(), usuario,
                                    "REMISIONES");
                        }

                        // Llena la factura
                        if (moddes.equals("PEDIDOS")) {
                            JVentasPedidosSet SetMod = new JVentasPedidosSet(request);
                            SetMod.m_Where = "ID_Pedido = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            //rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                            rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                            rec.setFecha(SetMod.getAbsRow(0).getFecha());
                            rec.setNombre(SetMod.getAbsRow(0).getCliente());
                            rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                            rec.setTC(SetMod.getAbsRow(0).getTC());
                            rec.setTotal(SetMod.getAbsRow(0).getTotal());
                            rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                            rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                            rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                            rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                        } else if (request.getParameter("tipomov").equals("COTIZACIONES")) {
                            JVentasCotizacionesSet SetMod = new JVentasCotizacionesSet(request);
                            SetMod.m_Where = "ID_Cotizacion = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            //rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                            rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                            rec.setFecha(SetMod.getAbsRow(0).getFecha());
                            rec.setNombre(SetMod.getAbsRow(0).getCliente());
                            rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                            rec.setTC(SetMod.getAbsRow(0).getTC());
                            rec.setTotal(SetMod.getAbsRow(0).getTotal());
                            rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                            rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                            rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                            rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                        }
                        JVentasFactSetCabV2 SetCab = new JVentasFactSetCabV2(request,
                                request.getParameter("tipomov"));
                        JVentasFactSetDetV2 SetDet = new JVentasFactSetDetV2(request,
                                request.getParameter("tipomov"));
                        SetCab.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetDet.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetCab.Open();
                        SetDet.Open();

                        rec.setMoneda(SetCab.getAbsRow(0).getMoneda());
                        rec.setNumero((int) SetCab.getAbsRow(0).getNumero());
                        rec.setColonia(SetCab.getAbsRow(0).getColonia());
                        if (SetCab.getAbsRow(0).getCondicion() == 0)
                            rec.setForma_Pago("contado");
                        else if (SetCab.getAbsRow(0).getCondicion() == 1)
                            rec.setForma_Pago("credito");
                        else
                            rec.setForma_Pago("ninguno");
                        rec.setCP(SetCab.getAbsRow(0).getCP());
                        rec.setDescuento(SetCab.getAbsRow(0).getDescuento());
                        rec.setDireccion(SetCab.getAbsRow(0).getDireccion());
                        rec.setImporte(SetCab.getAbsRow(0).getImporte());
                        rec.setIVA(SetCab.getAbsRow(0).getIVA());
                        rec.setIEPS(SetCab.getAbsRow(0).getIEPS());
                        rec.setIVARet(SetCab.getAbsRow(0).getIVARet());
                        rec.setISRRet(SetCab.getAbsRow(0).getISRRet());
                        rec.setObs(SetCab.getAbsRow(0).getObs());
                        rec.setPoblacion(SetCab.getAbsRow(0).getPoblacion());
                        rec.setRFC(SetCab.getAbsRow(0).getRFC());
                        rec.setSubTotal(SetCab.getAbsRow(0).getSubTotal());
                        rec.setTels(SetCab.getAbsRow(0).getTel());
                        rec.setID_Bodega(SetCab.getAbsRow(0).getID_Bodega());
                        rec.setBodegaDesc(SetCab.getAbsRow(0).getNombre());

                        for (int i = 0; i < SetDet.getNumRows(); i++) {
                            rec.agregaPartida(SetDet.getAbsRow(i).getCantidad(),
                                    SetDet.getAbsRow(i).getID_UnidadSalida(), SetDet.getAbsRow(i).getID_Prod(),
                                    SetDet.getAbsRow(i).getID_Prod(), SetDet.getAbsRow(i).getDescripcion(),
                                    SetDet.getAbsRow(i).getPrecio(), SetDet.getAbsRow(i).getImporte(),
                                    SetDet.getAbsRow(i).getDescuento(), SetDet.getAbsRow(i).getIVA(),
                                    SetDet.getAbsRow(i).getIEPS(), SetDet.getAbsRow(i).getIVARet(),
                                    SetDet.getAbsRow(i).getISRRet(), SetDet.getAbsRow(i).getImporteDesc(),
                                    SetDet.getAbsRow(i).getImporteIVA(), SetDet.getAbsRow(i).getImporteIEPS(),
                                    SetDet.getAbsRow(i).getImporteIVARet(),
                                    SetDet.getAbsRow(i).getImporteISRRet(), SetDet.getAbsRow(i).getTotalPart(),
                                    SetDet.getAbsRow(i).getObs(), SetDet.getAbsRow(i).getID_Tipo());
                        }

                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/ventas/ven_fact_dlg_generar.jsp", request, response);
                        return;
                    } else {
                        idmensaje = 1;
                        mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2);
                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    }
                } else {
                    idmensaje = 3;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1);
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                // Solicitud de envio a procesar
                if (request.getParameter("subproceso").equals("ENVIAR")) {
                    if (moddes.equals("PEDIDOS") || moddes.equals("COTIZACIONES")) {
                        if (request.getParameter("fecha") == null || request.getParameter("referencia") == null
                                || request.getParameter("fecha").equals("")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Se debe enviar la fecha y referencia de la remisi&oacute;n <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/ventas/ven_fact_dlg_generar.jsp", request, response);
                            return;
                        } else {
                            if (VerificarParametros(request, response)) {
                                AgregarDesde(request, response, "VREM", "VEN_REM", request.getParameter("ID"),
                                        idmod4, idmod, setids);
                                return;
                            }
                            irApag("/forsetiweb/ventas/ven_fact_dlg_generar.jsp", request, response);
                            return;
                        }
                    }
                }
            }

        } else if (request.getParameter("proceso").equals("PEDIR_VENTA")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso("VEN_PED_AGREGAR")) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", "VEN_PED_AGREGAR");
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                        "VEN_PED_AGREGAR", "VPED||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("subproceso") == null) // Como el subproceso no es ENVIAR, abre la ventana del proceso de FACTURADO por primera vez
            {
                if (request.getParameter("ID") != null) {
                    String[] valoresParam = request.getParameterValues("ID");
                    if (valoresParam.length == 1) {
                        if (moddes.equals("COTIZACIONES")) {
                            JVentasCotizacionesSet SetMod = new JVentasCotizacionesSet(request);
                            SetMod.m_Where = "ID_Cotizacion = '" + p(request.getParameter("ID")) + "'";
                            SetMod.Open();

                            if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta cotizaci&oacute;n ya esta cancelada, no se puede pedir <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                            if (SetMod.getAbsRow(0).getStatus().equals("F")
                                    || SetMod.getAbsRow(0).getStatus().equals("N")) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta cotizaci&oacute;n ya tiene un pedido, remisi&oacute;n o factura asociada, no se puede pedir <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }

                        } else // sale si no es cotizacion porque seria ( se estaria violando la seguridad )
                            return;

                        HttpSession ses = request.getSession(true);
                        JVenFactSes rec = (JVenFactSes) ses.getAttribute("ven_fact_dlg");
                        if (rec == null) {
                            rec = new JVenFactSes(request, getSesion(request).getSesion(idmod).getEspecial(),
                                    usuario, "PEDIDOS");
                            ses.setAttribute("ven_fact_dlg", rec);
                        } else {
                            rec.resetear(request, getSesion(request).getSesion(idmod).getEspecial(), usuario,
                                    "PEDIDOS");
                        }

                        // Llena el pedido
                        JVentasCotizacionesSet SetMod = new JVentasCotizacionesSet(request);
                        SetMod.m_Where = "ID_Cotizacion = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        //rec.setFactNum(SetMod.getAbsRow(0).getNumero());
                        rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                        rec.setFecha(SetMod.getAbsRow(0).getFecha());
                        rec.setNombre(SetMod.getAbsRow(0).getCliente());
                        rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                        rec.setTC(SetMod.getAbsRow(0).getTC());
                        rec.setTotal(SetMod.getAbsRow(0).getTotal());
                        rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                        rec.setFechaEntrega(SetMod.getAbsRow(0).getFecha());
                        rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                        rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());

                        JVentasFactSetCabV2 SetCab = new JVentasFactSetCabV2(request, moddes);
                        JVentasFactSetDetV2 SetDet = new JVentasFactSetDetV2(request, moddes);
                        SetCab.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetDet.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetCab.Open();
                        SetDet.Open();

                        rec.setMoneda(SetCab.getAbsRow(0).getMoneda());
                        rec.setNumero((int) SetCab.getAbsRow(0).getNumero());
                        rec.setColonia(SetCab.getAbsRow(0).getColonia());
                        if (SetCab.getAbsRow(0).getCondicion() == 0)
                            rec.setForma_Pago("contado");
                        else if (SetCab.getAbsRow(0).getCondicion() == 1)
                            rec.setForma_Pago("credito");
                        else
                            rec.setForma_Pago("ninguno");
                        rec.setCP(SetCab.getAbsRow(0).getCP());
                        rec.setDescuento(SetCab.getAbsRow(0).getDescuento());
                        rec.setDireccion(SetCab.getAbsRow(0).getDireccion());
                        rec.setImporte(SetCab.getAbsRow(0).getImporte());
                        rec.setIVA(SetCab.getAbsRow(0).getIVA());
                        rec.setIEPS(SetCab.getAbsRow(0).getIEPS());
                        rec.setIVARet(SetCab.getAbsRow(0).getIVARet());
                        rec.setISRRet(SetCab.getAbsRow(0).getISRRet());
                        rec.setObs(SetCab.getAbsRow(0).getObs());
                        rec.setPoblacion(SetCab.getAbsRow(0).getPoblacion());
                        rec.setRFC(SetCab.getAbsRow(0).getRFC());
                        rec.setSubTotal(SetCab.getAbsRow(0).getSubTotal());
                        rec.setTels(SetCab.getAbsRow(0).getTel());
                        rec.setID_Bodega(SetCab.getAbsRow(0).getID_Bodega());
                        rec.setBodegaDesc(SetCab.getAbsRow(0).getNombre());

                        for (int i = 0; i < SetDet.getNumRows(); i++) {
                            rec.agregaPartida(SetDet.getAbsRow(i).getCantidad(),
                                    SetDet.getAbsRow(i).getID_UnidadSalida(), SetDet.getAbsRow(i).getID_Prod(),
                                    SetDet.getAbsRow(i).getID_Prod(), SetDet.getAbsRow(i).getDescripcion(),
                                    SetDet.getAbsRow(i).getPrecio(), SetDet.getAbsRow(i).getImporte(),
                                    SetDet.getAbsRow(i).getDescuento(), SetDet.getAbsRow(i).getIVA(),
                                    SetDet.getAbsRow(i).getIEPS(), SetDet.getAbsRow(i).getIVARet(),
                                    SetDet.getAbsRow(i).getISRRet(), SetDet.getAbsRow(i).getImporteDesc(),
                                    SetDet.getAbsRow(i).getImporteIVA(), SetDet.getAbsRow(i).getImporteIEPS(),
                                    SetDet.getAbsRow(i).getImporteIVARet(),
                                    SetDet.getAbsRow(i).getImporteISRRet(), SetDet.getAbsRow(i).getTotalPart(),
                                    SetDet.getAbsRow(i).getObs(), SetDet.getAbsRow(i).getID_Tipo());
                        }

                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/ventas/ven_fact_dlg_generar.jsp", request, response);
                        return;
                    } else {
                        idmensaje = 1;
                        mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2);
                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    }
                } else {
                    idmensaje = 3;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1);
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                // Solicitud de envio a procesar
                if (request.getParameter("subproceso").equals("ENVIAR")) {
                    if (request.getParameter("tipomov").equals("COTIZACIONES")) {
                        if (request.getParameter("fecha") == null || request.getParameter("referencia") == null
                                || request.getParameter("fecha").equals("")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Se debe enviar la fecha y referencia del pedido <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/ventas/ven_fact_dlg_generar.jsp", request, response);
                            return;
                        } else {
                            if (VerificarParametros(request, response)) {
                                AgregarDesde(request, response, "VPED", "VEN_PED", request.getParameter("ID"),
                                        idmod4, idmod, setids);
                                return;
                            }
                            irApag("/forsetiweb/ventas/ven_fact_dlg_generar.jsp", request, response);
                            return;
                        }
                    }
                }
            }
        } else if (request.getParameter("proceso").equals("IMPRIMIR")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso(idmod)) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", idmod);
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(), idmod,
                        idmod4 + "||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("ID") != null) {
                String[] valoresParam = request.getParameterValues("ID");
                if (valoresParam.length == 1) {
                    if (request.getParameter("subproceso") != null
                            && request.getParameter("subproceso").equals("IMPRESION")) {
                        StringBuffer bsmensaje = new StringBuffer(254);
                        String SQLCab = "select * from ";
                        String SQLDet = "select * from ";
                        if (moddes.equals("FACTURAS")) {
                            SQLCab += "view_ventas_facturas_impcab where ID_Factura = ";
                            SQLDet += "view_ventas_facturas_impdet where ID_Factura = ";
                        } else if (moddes.equals("PEDIDOS")) {
                            SQLCab += "view_ventas_pedidos_impcab where ID_Pedido = ";
                            SQLDet += "view_ventas_pedidos_impdet where ID_Pedido = ";
                        } else if (moddes.equals("REMISIONES")) {
                            SQLCab += "view_ventas_remisiones_impcab where ID_Remision = ";
                            SQLDet += "view_ventas_remisiones_impdet where ID_Remision = ";
                        } else if (moddes.equals("COTIZACIONES")) {
                            SQLCab += "view_ventas_cotizaciones_impcab where ID_Cotizacion = ";
                            SQLDet += "view_ventas_cotizaciones_impdet where ID_Cotizacion = ";
                        } else //Devoluciones
                        {
                            SQLCab += "view_ventas_devoluciones_impcab where ID_Devolucion = ";
                            SQLDet += "view_ventas_devoluciones_impdet where ID_Devolucion = ";
                        }
                        SQLCab += request.getParameter("ID");
                        SQLDet += request.getParameter("ID");

                        idmensaje = Imprimir(SQLCab, SQLDet, request.getParameter("idformato"), bsmensaje,
                                request, response);

                        if (idmensaje != -1) {
                            getSesion(request).setID_Mensaje(idmensaje, bsmensaje.toString());
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }
                    } else // significa que debe llamar a la ventana de formatos de impresion
                    {
                        if (moddes.equals("FACTURAS")) {
                            request.setAttribute("impresion", "CEFVenFactDlg");
                            request.setAttribute("tipo_imp", "VEN_FAC");
                            request.setAttribute("formato_default", setids.getAbsRow(0).getFormato());
                        } else if (moddes.equals("PEDIDOS")) {
                            request.setAttribute("impresion", "CEFVenFactDlg");
                            request.setAttribute("tipo_imp", "VEN_PED");
                            request.setAttribute("formato_default", setids.getAbsRow(0).getFmt_Pedido());
                        } else if (moddes.equals("REMISIONES")) {
                            request.setAttribute("impresion", "CEFVenFactDlg");
                            request.setAttribute("tipo_imp", "VEN_REM");
                            request.setAttribute("formato_default", setids.getAbsRow(0).getFmt_Remision());
                        } else if (moddes.equals("COTIZACIONES")) {
                            request.setAttribute("impresion", "CEFVenFactDlg");
                            request.setAttribute("tipo_imp", "VEN_COT");
                            request.setAttribute("formato_default", setids.getAbsRow(0).getFmt_Cotizacion());
                        } else //DEVOLUCIONES
                        {
                            request.setAttribute("impresion", "CEFVenFactDlg");
                            request.setAttribute("tipo_imp", "VEN_DEV");
                            request.setAttribute("formato_default", setids.getAbsRow(0).getFmt_Devolucion());
                        }

                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/impresion_dlg.jsp", request, response);
                        return;
                    }
                } else {
                    idmensaje = 1;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2);
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                idmensaje = 3;
                mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1);
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }
        } else if (request.getParameter("proceso").equals("DEVOLVER_VENTA")
                || request.getParameter("proceso").equals("REBAJAR_VENTA")) {
            // Revisa si tiene permisos
            if (request.getParameter("proceso").equals("DEVOLVER_VENTA")
                    && !getSesion(request).getPermiso("VEN_DEV_DEVOLVER")) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", "VEN_DEV_DEVOLVER");
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                        "VEN_DEV_DEVOLVER", "VDEV||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }
            if (request.getParameter("proceso").equals("REBAJAR_VENTA")
                    && !getSesion(request).getPermiso("VEN_DEV_REBAJAR")) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", "VEN_DEV_REBAJAR");
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                        "VEN_DEV_REBAJAR", "VDEV||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("subproceso") == null) // Como el subproceso no es ENVIAR ni EDIT_PART ni BORR_PART, abre la ventana del proceso de AGREGADO para agregar `por primera vez
            {
                if (request.getParameter("ID") != null) {
                    String[] valoresParam = request.getParameterValues("ID");
                    if (valoresParam.length == 1) {
                        JVentasFactSetV2 SetMod = new JVentasFactSetV2(request);
                        SetMod.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetMod.Open();

                        if (SetMod.getAbsRow(0).getStatus().equals("C")) {
                            idmensaje = 1;
                            mensaje += "PRECAUCION: Esta factura ya esta cancelada, no se puede generar la devolucin <br>";
                            getSesion(request).setID_Mensaje(idmensaje, mensaje);
                            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                            return;
                        }

                        if (request.getParameter("proceso").equals("DEVOLVER_VENTA")) {
                            if (SetMod.getAbsRow(0).getID_PolCost() == -1
                                    || (!SetMod.getAbsRow(0).getStatus().equals("E")
                                            && setids.getAbsRow(0).getAuditarAlm())) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta factura debe estar guardada, revertida, o ser factura sin movimiento al almacn. Solo se pueden devolver las facturas emitidas con movimientos al almacn <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }
                            //SetRem.getNumRows() == 0 && SetMod.getAbsRow(0).getID_PolCost() != -1 && !setids.getAbsRow(0).getFijaCost() && setids.getAbsRow(0).getAuditarAlm() && !SetMod.getAbsRow(0).getStatus().equals("R") )
                        } else // Rebajar venta
                        {
                            if (SetMod.getAbsRow(0).getID_PolCost() != -1
                                    && !SetMod.getAbsRow(0).getStatus().equals("E")
                                    && setids.getAbsRow(0).getAuditarAlm()) {
                                idmensaje = 1;
                                mensaje += "PRECAUCION: Esta factura debe estar guardada o revertida. Solo se pueden rebajar las facturas emitidas <br>";
                                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                                return;
                            }
                        }

                        HttpSession ses = request.getSession(true);
                        JVenFactSes rec = (JVenDevSes) ses.getAttribute("ven_dev_dlg");
                        if (rec == null) {
                            rec = new JVenDevSes(request, getSesion(request).getSesion("VEN_FAC").getEspecial(),
                                    usuario, "DEVOLUCIONES");
                            ses.setAttribute("ven_dev_dlg", rec);
                        } else
                            rec.resetear(request, getSesion(request).getSesion("VEN_FAC").getEspecial(),
                                    usuario, "DEVOLUCIONES");

                        rec.setClave((int) SetMod.getAbsRow(0).getID_Cliente());
                        rec.setNombre(SetMod.getAbsRow(0).getCliente());
                        rec.setID_Moneda(SetMod.getAbsRow(0).getMoneda());
                        rec.setTC(SetMod.getAbsRow(0).getTC());
                        rec.setTotal(SetMod.getAbsRow(0).getTotal());
                        rec.setReferencia(SetMod.getAbsRow(0).getReferencia());
                        rec.setID_Vendedor(SetMod.getAbsRow(0).getID_Vendedor());
                        rec.setVendedorNombre(SetMod.getAbsRow(0).getVendedorNombre());
                        rec.setID_Factura(SetMod.getAbsRow(0).getID_Factura());
                        if (request.getParameter("proceso").equals("DEVOLVER_VENTA"))
                            rec.setDevReb("DEV");
                        else
                            rec.setDevReb("REB");
                        JVentasFactSetCabV2 SetCab = new JVentasFactSetCabV2(request, "FACTURAS");
                        JVentasFactSetDetV2 SetDet = new JVentasFactSetDetV2(request,
                                "FACTURAS"/*"AGR_DEVOL"*/);
                        SetCab.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetDet.m_Where = "ID_Factura = '" + p(request.getParameter("ID")) + "'";
                        SetCab.Open();
                        SetDet.Open();

                        rec.setMoneda(SetCab.getAbsRow(0).getMoneda());
                        rec.setNumero((int) SetCab.getAbsRow(0).getNumero());
                        rec.setColonia(SetCab.getAbsRow(0).getColonia());
                        if (SetCab.getAbsRow(0).getCondicion() == 0)
                            rec.setForma_Pago("contado");
                        else if (SetCab.getAbsRow(0).getCondicion() == 1)
                            rec.setForma_Pago("credito");
                        else
                            rec.setForma_Pago("ninguno");
                        rec.setCP(SetCab.getAbsRow(0).getCP());
                        rec.setDescuento(SetCab.getAbsRow(0).getDescuento());
                        rec.setDireccion(SetCab.getAbsRow(0).getDireccion());
                        rec.setImporte(SetCab.getAbsRow(0).getImporte());
                        rec.setIVA(SetCab.getAbsRow(0).getIVA());
                        rec.setIEPS(SetCab.getAbsRow(0).getIEPS());
                        rec.setIVARet(SetCab.getAbsRow(0).getIVARet());
                        rec.setISRRet(SetCab.getAbsRow(0).getISRRet());
                        rec.setObs(SetCab.getAbsRow(0).getObs());
                        rec.setPoblacion(SetCab.getAbsRow(0).getPoblacion());
                        rec.setRFC(SetCab.getAbsRow(0).getRFC());
                        rec.setSubTotal(SetCab.getAbsRow(0).getSubTotal());
                        rec.setTels(SetCab.getAbsRow(0).getTel());
                        rec.setID_Bodega(SetCab.getAbsRow(0).getID_Bodega());
                        rec.setBodegaDesc(SetCab.getAbsRow(0).getNombre());

                        for (int i = 0; i < SetDet.getNumRows(); i++) {
                            rec.agregaPartida(SetDet.getAbsRow(i).getCantidad(),
                                    SetDet.getAbsRow(i).getID_UnidadSalida(), SetDet.getAbsRow(i).getID_Prod(),
                                    SetDet.getAbsRow(i).getID_Prod(), SetDet.getAbsRow(i).getDescripcion(),
                                    SetDet.getAbsRow(i).getPrecio(), SetDet.getAbsRow(i).getImporte(),
                                    SetDet.getAbsRow(i).getDescuento(), SetDet.getAbsRow(i).getIVA(),
                                    SetDet.getAbsRow(i).getIEPS(), SetDet.getAbsRow(i).getIVARet(),
                                    SetDet.getAbsRow(i).getISRRet(), SetDet.getAbsRow(i).getImporteDesc(),
                                    SetDet.getAbsRow(i).getImporteIVA(), SetDet.getAbsRow(i).getImporteIEPS(),
                                    SetDet.getAbsRow(i).getImporteIVARet(),
                                    SetDet.getAbsRow(i).getImporteISRRet(), SetDet.getAbsRow(i).getTotalPart(),
                                    SetDet.getAbsRow(i).getObs(), SetDet.getAbsRow(i).getID_Tipo());
                        }

                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                        return;
                    } else {
                        idmensaje = 1;
                        mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2);
                        getSesion(request).setID_Mensaje(idmensaje, mensaje);
                        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                        return;
                    }
                } else {
                    idmensaje = 3;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1);
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                // Solicitud de envio a procesar
                if (request.getParameter("subproceso").equals("ENVIAR")) {
                    if (AgregarCabeceroDev(request, response) == -1) {
                        HttpSession ses = request.getSession(true);
                        JVenFactSes rec = (JVenDevSes) ses.getAttribute("ven_dev_dlg");

                        if (rec.getForma_Pago().equals("contado")) {
                            request.setAttribute("fsipg_tipo", "ventas");
                            request.setAttribute("fsipg_total", rec.getTotal());
                            request.setAttribute("fsipg_proc", "retiro");
                            request.setAttribute("fsipg_ident",
                                    getSesion(request).getSesion("VEN_FAC").getEspecial());
                            request.setAttribute("fsipg_id_concepto", 0);
                            request.setAttribute("fsipg_desc_concepto", "");
                            if (VerificarParametrosDev(request, response)
                                    && VerificarPagoMult(request, response)) {
                                AgregarDev(request, response, setids);
                                return;
                            }
                        } else if (rec.getForma_Pago().equals("credito")) {
                            request.setAttribute("fsipg_tipo", "ventas");
                            if (VerificarParametrosDev(request, response)
                                    && VerificarSaldo(request, response)) {
                                AgregarDev(request, response, setids);
                                return;
                            }
                        } else //Ningun pago
                        {
                            request.setAttribute("fsipg_tipo", "ventas");
                            if (VerificarParametrosDev(request, response)) {
                                AgregarDev(request, response, setids);
                                return;
                            }
                        }
                    }

                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;

                } else if (request.getParameter("subproceso").equals("EDIT_PART")) {
                    if (AgregarCabeceroDev(request, response) == -1) {
                        if (VerificarParametrosPartidaDev(request, response))
                            EditarPartidaDev(request, response);
                    }

                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;
                } else if (request.getParameter("subproceso").equals("BORR_PART")) {
                    if (AgregarCabeceroDev(request, response) == -1) {
                        BorrarPartidaDev(request, response);
                    }

                    irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                    return;
                }

                idmensaje = 1;
                mensaje += "PRECAUCION: No se pueden agregar partidas a una devolucion o rebaja. Intenta editar o borrar lo que no desees devolver o rebajar";
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                irApag("/forsetiweb/ventas/ven_fact_dlg.jsp", request, response);
                return;
            }
        } else if (request.getParameter("proceso").equals("RASTREAR_MOVIMIENTO")) {
            // Revisa si tiene permisos
            if (!getSesion(request).getPermiso(idmod + "_CONSULTAR")) {
                idmensaje = 3;
                mensaje += MsjPermisoDenegado(request, "CEF", idmod + "_CONSULTAR");
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                RDP("CEF", getSesion(request).getConBD(), "NA", getSesion(request).getID_Usuario(),
                        idmod + "_CONSULTAR", idmod4 + "||||", mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

            if (request.getParameter("ID") != null) {
                String[] valoresParam = request.getParameterValues("ID");
                if (valoresParam.length == 1) {
                    JRastreo rastreo = new JRastreo(request,
                            getSesion(request).getSesion(idmod)
                                    .generarTitulo(JUtil.Msj("CEF", idmod, "VISTA", "CONSULTAR_VENTA", 3)),
                            idmod4, request.getParameter("ID"));
                    String rastreo_imp = "true";
                    request.setAttribute("rastreo_imp", rastreo_imp);
                    // Ahora pone los atributos para el jsp
                    request.setAttribute("rastreo", rastreo);
                    RDP("CEF", getSesion(request).getConBD(), "OK", getSesion(request).getID_Usuario(),
                            idmod + "_CONSULTAR", idmod4 + "|" + request.getParameter("ID") + "|"
                                    + getSesion(request).getSesion(idmod).getEspecial() + "||",
                            "");
                    irApag("/forsetiweb/rastreo_imp.jsp", request, response);
                    return;

                } else {
                    idmensaje = 1;
                    mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 2); //"PRECAUCION: Solo se permite consultar una pliza a la vez <br>";
                    getSesion(request).setID_Mensaje(idmensaje, mensaje);
                    irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                    return;
                }
            } else {
                idmensaje = 3;
                mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 1); //" ERROR: Se debe enviar el identificador de la pliza que se quiere consultar<br>";
                getSesion(request).setID_Mensaje(idmensaje, mensaje);
                irApag("/forsetiweb/caja_mensajes.jsp", request, response);
                return;
            }

        } else {
            idmensaje = 3;
            mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 3);
            getSesion(request).setID_Mensaje(idmensaje, mensaje);
            irApag("/forsetiweb/caja_mensajes.jsp", request, response);
            return;
        }

    } else // si no se mandan parametros, manda a error
    {
        idmensaje = 3;
        mensaje += JUtil.Msj("GLB", "VISTA", "GLB", "SELEC-PROC", 3);
        getSesion(request).setID_Mensaje(idmensaje, mensaje);
        irApag("/forsetiweb/caja_mensajes.jsp", request, response);
        return;
    }

}

From source file:com.meikai.common.web.servlet.FCKeditorConnectorServlet.java

/**
 * Manage the Post requests (FileUpload).<br>
 * //from  w  w w .j  a v  a  2 s.c  o m
 * The servlet accepts commands sent in the following format:<br>
 * connector?Command=FileUpload&Type=ResourceType&CurrentFolder=FolderPath<br>
 * <br>
 * It store the file (renaming it in case a file with the same name exists)
 * and then return an HTML file with a javascript command in it.
 * 
 */
public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    if (debug)
        System.out.println("--- BEGIN Connector DOPOST ---");

    response.setContentType("text/html; charset=UTF-8");
    response.setHeader("Cache-Control", "no-cache");

    String retVal = "0";
    String newName = "";

    // edit check user uploader file size
    int contextLength = request.getContentLength();
    int fileSize = (int) (((float) contextLength) / ((float) (1024)));
    PrintWriter out = response.getWriter();

    if (fileSize < 30240) {

        String commandStr = request.getParameter("Command");
        String typeStr = request.getParameter("Type");
        String currentFolderStr = request.getParameter("CurrentFolder");
        String currentPath = baseDir + typeStr + "/" + dateCreated.substring(0, 4) + "/"
                + dateCreated.substring(5) + currentFolderStr;
        // create user dir
        makeDirectory(getServletContext().getRealPath("/"), currentPath);
        String currentDirPath = getServletContext().getRealPath(currentPath);
        // edit end ++++++++++++++++

        if (debug)
            System.out.println(currentDirPath);

        if (!commandStr.equals("FileUpload"))
            retVal = "203";
        else {
            DiskFileUpload upload = new DiskFileUpload();

            try {

                upload.setSizeMax(1 * 1024 * 1024); // ??,??: 
                upload.setSizeThreshold(4096); // ???,??: 
                upload.setRepositoryPath("c:/temp/"); // ?getSizeThreshold()? 
                List items = upload.parseRequest(request);

                Map fields = new HashMap();

                Iterator iter = items.iterator();
                while (iter.hasNext()) {
                    FileItem item = (FileItem) iter.next();
                    if (item.isFormField())
                        fields.put(item.getFieldName(), item.getString());
                    else
                        fields.put(item.getFieldName(), item);
                }
                FileItem uplFile = (FileItem) fields.get("NewFile");
                String fileNameLong = uplFile.getName();
                fileNameLong = fileNameLong.replace('\\', '/');
                String[] pathParts = fileNameLong.split("/");
                String fileName = pathParts[pathParts.length - 1];

                String nameWithoutExt = getNameWithoutExtension(fileName);
                String ext = getExtension(fileName);
                File pathToSave = new File(currentDirPath, fileName);
                if (FckeditorUtil.extIsAllowed(allowedExtensions, deniedExtensions, typeStr, ext)) {
                    int counter = 1;
                    while (pathToSave.exists()) {
                        newName = nameWithoutExt + "(" + counter + ")" + "." + ext;
                        retVal = "201";
                        pathToSave = new File(currentDirPath, newName);
                        counter++;
                    }
                    uplFile.write(pathToSave);
                    // ?
                    if (logger.isInfoEnabled()) {
                        logger.info("...");
                    }
                } else {
                    retVal = "202";
                    if (debug)
                        System.out.println("Invalid file type: " + ext);
                }
            } catch (Exception ex) {
                ex.printStackTrace();
                retVal = "203";
            }
        }
    } else {
        retVal = "204";
    }
    out.println("<script type=\"text/javascript\">");
    out.println("window.parent.frames['frmUpload'].OnUploadCompleted(" + retVal + ",'" + newName + "');");
    out.println("</script>");
    out.flush();
    out.close();

    if (debug)
        System.out.println("--- END DOPOST ---");

}

From source file:com.krawler.esp.servlets.SuperAdminServlet.java

public static String editCompany(Connection conn, HttpServletRequest request, HttpServletResponse response)
        throws ServiceException {

    String status = "";
    DiskFileUpload fu = new DiskFileUpload();
    JSONObject j = new JSONObject();
    JSONObject j1 = new JSONObject();
    List fileItems = null;/*from  www  .j a v a  2 s .com*/
    FileItem fi1 = null;
    try {
        fileItems = fu.parseRequest(request);
    } catch (FileUploadException e) {
        throw ServiceException.FAILURE("SuperAdminHandler.editCompany", e);
    }

    HashMap arrParam = new HashMap();
    for (Iterator k = fileItems.iterator(); k.hasNext();) {
        fi1 = (FileItem) k.next();
        arrParam.put(fi1.getFieldName(), fi1.getString());
    }
    try {
        DbUtil.executeUpdate(conn,
                "update company set companyname=?, address=?, city=?, state=?, country=?, phone=?, fax=?, "
                        + "zip=?, timezone=?, website=? where companyid=?;",
                new Object[] { arrParam.get("companyname"), arrParam.get("address"), arrParam.get("city"),
                        arrParam.get("state"), arrParam.get("country"), arrParam.get("phone"),
                        arrParam.get("fax"), arrParam.get("zip"), arrParam.get("timezone"),
                        arrParam.get("website"), arrParam.get("companyid") });
        j.put("companyname", arrParam.get("companyname"));
        j.put("address", arrParam.get("address"));
        j.put("city", arrParam.get("city"));
        j.put("state", arrParam.get("state"));
        j.put("country", arrParam.get("country"));
        j.put("phone", arrParam.get("phone"));
        j.put("fax", arrParam.get("fax"));
        j.put("zip", arrParam.get("zip"));
        j.put("timezone", arrParam.get("timezone"));
        j.put("website", arrParam.get("website"));
        j.put("companyid", arrParam.get("companyid"));
        if (arrParam.get("image").toString().length() != 0) {
            genericFileUpload uploader = new genericFileUpload();
            try {
                uploader.doPost(fileItems, arrParam.get("companyid").toString(),
                        StorageHandler.GetProfileImgStorePath());
            } catch (ConfigurationException e) {
                throw ServiceException.FAILURE("SuperAdminHandler.createCompany", e);
            }
            if (uploader.isUploaded()) {
                DbUtil.executeUpdate(conn, "update company set image=? where companyid = ?",
                        new Object[] { ProfileImageServlet.ImgBasePath + arrParam.get("companyid").toString()
                                + uploader.getExt(), arrParam.get("companyid") });
                j.put("image", arrParam.get("companyid") + uploader.getExt());
            }
        }
        j1.append("data", j);
        status = j1.toString();
    } catch (JSONException e) {
        status = "failure";
        throw ServiceException.FAILURE("SuperAdminHandler.editCompany", e);
    }
    return status;
}

From source file:com.krawler.spring.crm.common.documentController.java

public ModelAndView addDocuments(HttpServletRequest request, HttpServletResponse response)
        throws ServletException {
    JSONObject jobj = new JSONObject();
    JSONObject myjobj = new JSONObject();
    List fileItems = null;/*from ww w .  jav  a 2s.c o  m*/
    String details = "";
    KwlReturnObject kmsg = null;
    String auditAction = "";
    String id = java.util.UUID.randomUUID().toString();
    // PrintWriter out = null;
    //Create transaction
    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setName("JE_Tx");
    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
    def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_UNCOMMITTED);
    TransactionStatus status = txnManager.getTransaction(def);
    try {
        response.setContentType("text/html;charset=UTF-8");
        // out = response.getWriter();
        String userid = sessionHandlerImpl.getUserid(request);
        String companyID = sessionHandlerImpl.getCompanyid(request);
        String map = request.getParameter("mapid");
        HashMap<String, String> arrParam = new HashMap<String, String>();
        boolean fileUpload = false;
        ArrayList<FileItem> fi = new ArrayList<FileItem>();
        if (request.getParameter("fileAdd") != null) {
            DiskFileUpload fu = new DiskFileUpload();
            fileItems = fu.parseRequest(request);
            crmDocumentDAOObj.parseRequest(fileItems, arrParam, fi, fileUpload);
        }
        String docID = "";
        for (int cnt = 0; cnt < fi.size(); cnt++) {
            kmsg = crmDocumentDAOObj.uploadFile(fi.get(cnt), userid, companyID, getServletContext());
            Docs doc = (Docs) kmsg.getEntityList().get(0);
            docID = doc.getDocid();
            String refid = arrParam.get("refid");
            jobj.put("userid", userid);
            jobj.put("docid", docID);
            jobj.put("companyid", companyID);
            jobj.put("id", id);
            jobj.put("map", map);
            jobj.put("refid", refid);
            crmDocumentDAOObj.saveDocumentMapping(jobj);
            String randomid = java.util.UUID.randomUUID().toString();
            crmDocumentDAOObj.insertDocumentOwnerEntry(randomid, userid, docID);
            if (map.equals("0")) {
                CrmCampaign c = (CrmCampaign) hibernateTemplate.get(CrmCampaign.class, refid);
                details = " Campaign - ";
                details += StringUtil.isNullOrEmpty(c.getCampaignname()) ? "" : c.getCampaignname();
                auditAction = AuditAction.CAMPAIGN_DOC_UPLOAD;
            } else if (map.equals("1")) {
                CrmLead l = (CrmLead) hibernateTemplate.get(CrmLead.class, refid);
                details = " Lead - ";
                details += StringUtil.isNullOrEmpty(l.getFirstname()) ? "" : l.getFirstname() + " ";
                details += StringUtil.isNullOrEmpty(l.getLastname()) ? "" : l.getLastname();
                auditAction = AuditAction.LEAD_DOC_UPLOAD;
            } else if (map.equals("2")) {
                CrmContact c = (CrmContact) hibernateTemplate.get(CrmContact.class, refid);
                details = " Contact - ";
                details += StringUtil.isNullOrEmpty(c.getFirstname()) ? "" : c.getFirstname() + " ";
                details += StringUtil.isNullOrEmpty(c.getLastname()) ? "" : c.getLastname();
                auditAction = AuditAction.CONTACT_DOC_UPLOAD;
            } else if (map.equals("3")) {
                CrmProduct p = (CrmProduct) hibernateTemplate.get(CrmProduct.class, refid);
                details = " Product - ";
                details += StringUtil.isNullOrEmpty(p.getProductname()) ? "" : p.getProductname();
                auditAction = AuditAction.PRODUCT_DOC_UPLOAD;
            } else if (map.equals("4")) {
                CrmAccount a = (CrmAccount) hibernateTemplate.get(CrmAccount.class, refid);
                details = " Account - ";
                details += StringUtil.isNullOrEmpty(a.getAccountname()) ? "" : a.getAccountname();
                auditAction = AuditAction.ACCOUNT_DOC_UPLOAD;
            } else if (map.equals("5")) {
                CrmOpportunity o = (CrmOpportunity) hibernateTemplate.get(CrmOpportunity.class, refid);
                details = " Opportunity - ";
                details += StringUtil.isNullOrEmpty(o.getOppname()) ? "" : o.getOppname();
                auditAction = AuditAction.OPPORTUNITY_DOC_UPLOAD;
            } else if (map.equals("6")) {
                CrmCase c = (CrmCase) hibernateTemplate.get(CrmCase.class, refid);
                details = " Case - ";
                details += StringUtil.isNullOrEmpty(c.getSubject()) ? "" : c.getSubject();
                auditAction = AuditAction.CASE_DOC_UPLOAD;
            } else if (map.equals("7")) {
                CrmActivityMaster am = (CrmActivityMaster) hibernateTemplate.get(CrmActivityMaster.class,
                        refid);
                details = " Activity - ";
                details += StringUtil.isNullOrEmpty(am.getFlag()) ? "" : am.getFlag() + " ";
                details += StringUtil.isNullOrEmpty(am.getCrmCombodataByStatusid().getValue()) ? ""
                        : am.getCrmCombodataByStatusid().getValue();
                auditAction = AuditAction.ACTIVITY_DOC_UPLOAD;
            } else if (map.equals("-1")) {
                details = " My - Document ";
                auditAction = AuditAction.MY_DOC_UPLOAD;
            }
            auditTrailDAOObj.insertAuditLog(auditAction,
                    " Docment: '" + doc.getDocname() + "' , uploaded for " + details, request, refid, id);
        }
        myjobj.put("ID", docID);
        txnManager.commit(status);
    } catch (Exception e) {
        logger.warn(e.getMessage(), e);
        txnManager.rollback(status);
    } finally {
        // out.close();
    }
    return new ModelAndView("jsonView", "model", myjobj.toString());
}

From source file:de.jwi.jfm.servlets.Controller.java

private String handleUpload(HttpServletRequest request, Folder folder) throws Exception {
    DiskFileUpload upload = new DiskFileUpload();
    upload.setRepositoryPath(tempDir.toString());
    System.out.println(upload.getSizeMax());

    // parse this request by the handler
    // this gives us a list of items from the request
    List items = upload.parseRequest(request);

    Iterator itr = items.iterator();

    boolean unzip = false;

    while (itr.hasNext()) {
        FileItem item = (FileItem) itr.next();

        // check if the current item is a form field or an uploaded file
        if (item.isFormField()) {
            String name = item.getFieldName();
            String value = item.getString();
            if ("command".equals(name) && "unzip".equals(value)) {
                unzip = true;/*from w  w  w  . j  a  v a2s.c om*/
            }
        } else {
            String name = item.getFieldName();
            unzip = "unzip".equals(name);

            if (!"".equals(item.getName())) {
                folder.upload(item, unzip);
            }
            // the item must be an uploaded file save it to disk. Note that
            // there
            // seems to be a bug in item.getName() as it returns the full
            // path on
            // the client's machine for the uploaded file name, instead of
            // the file
            // name only. To overcome that, I have used a workaround using
            // fullFile.getName().
            /*
             * File fullFile = new File(item.getName()); File savedFile =
             * new File(getServletContext().getRealPath("/"),
             */
            // item.write(savedFile);
        }
    }
    return "";
}

From source file:com.sun.faban.harness.webclient.CLIServlet.java

private void doSubmit(String[] reqC, HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    if (reqC.length < 3) {
        response.sendError(HttpServletResponse.SC_BAD_REQUEST,
                "Benchmark and profile not provided in request.");
        return;/*  ww w.j  a v a 2s  .c o m*/
    }
    // first is the bench name
    BenchmarkDescription desc = BenchmarkDescription.getDescription(reqC[1]);
    if (desc == null) {
        response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Benchmark " + reqC[1] + " not deployed.");
        return;
    }
    try {
        String user = null;
        String password = null;
        boolean hasPermission = true;

        ArrayList<String> runIdList = new ArrayList<String>();

        DiskFileUpload fu = new DiskFileUpload();
        // No maximum size
        fu.setSizeMax(-1);
        // maximum size that will be stored in memory
        fu.setSizeThreshold(8192);
        // the location for saving data larger than getSizeThreshold()
        fu.setRepositoryPath(Config.TMP_DIR);

        List fileItems = null;
        try {
            fileItems = fu.parseRequest(request);
        } catch (FileUploadException e) {
            throw new ServletException(e);
        }

        for (Iterator i = fileItems.iterator(); i.hasNext();) {
            FileItem item = (FileItem) i.next();
            String fieldName = item.getFieldName();
            if (item.isFormField()) {
                if ("sun".equals(fieldName)) {
                    user = item.getString();
                } else if ("sp".equals(fieldName)) {
                    password = item.getString();
                }
                continue;
            }
            if (reqC[2] == null) // No profile
                break;

            if (desc == null)
                break;

            if (!"configfile".equals(fieldName))
                continue;

            if (Config.SECURITY_ENABLED) {
                if (Config.CLI_SUBMITTER == null || Config.CLI_SUBMITTER.length() == 0
                        || !Config.CLI_SUBMITTER.equals(user)) {
                    hasPermission = false;
                    break;
                }
                if (Config.SUBMIT_PASSWORD == null || Config.SUBMIT_PASSWORD.length() == 0
                        || !Config.SUBMIT_PASSWORD.equals(password)) {
                    hasPermission = false;
                    break;
                }
            }

            String usrDir = Config.PROFILES_DIR + reqC[2];
            File dir = new File(usrDir);
            if (dir.exists()) {
                if (!dir.isDirectory()) {
                    logger.severe(usrDir + " should be a directory");
                    dir.delete();
                    logger.fine(dir + " deleted");
                } else
                    logger.fine("Saving parameter file to" + usrDir);
            } else {
                logger.fine("Creating new profile directory for " + reqC[2]);
                if (dir.mkdirs())
                    logger.fine("Created new profile directory " + usrDir);
                else
                    logger.severe("Failed to create profile " + "directory " + usrDir);
            }

            // Save the latest config file into the profile directory
            String dstFile = Config.PROFILES_DIR + reqC[2] + File.separator + desc.configFileName + "."
                    + desc.shortName;

            item.write(new File(dstFile));
            runIdList.add(RunQ.getHandle().addRun(user, reqC[2], desc));
        }

        response.setContentType("text/plain");
        Writer writer = response.getWriter();

        if (!hasPermission) {
            response.setStatus(HttpServletResponse.SC_FORBIDDEN);
            writer.write("Permission denied!\n");
        }

        if (runIdList.size() == 0)
            writer.write("No runs submitted.\n");
        for (String newRunId : runIdList) {
            writer.write(newRunId);
        }

        writer.flush();
        writer.close();
    } catch (ServletException e) {
        logger.log(Level.SEVERE, e.getMessage(), e);
        throw e;
    } catch (IOException e) {
        logger.log(Level.SEVERE, e.getMessage(), e);
        throw e;
    } catch (Exception e) {
        logger.log(Level.SEVERE, e.getMessage(), e);
        throw new ServletException(e);
    }
}

From source file:com.krawler.workflow.module.dao.BaseBuilderDao.java

public void parseRequest(HttpServletRequest request, HashMap<String, String> arrParam, ArrayList<FileItem> fi,
        boolean fileUpload) throws ServiceException {
    DiskFileUpload fu = new DiskFileUpload();
    FileItem fi1 = null;/*from   www.  j a v a  2 s .  c om*/
    List fileItems = null;
    try {
        fileItems = fu.parseRequest(request);
    } catch (FileUploadException e) {
        logger.warn(e.getMessage(), e);
        throw ServiceException.FAILURE("Admin.createUser", e);
    }
    for (Iterator k = fileItems.iterator(); k.hasNext();) {
        fi1 = (FileItem) k.next();
        if (fi1.isFormField()) {
            try {
                arrParam.put(fi1.getFieldName(), fi1.getString("UTF-8"));
            } catch (UnsupportedEncodingException e) {
                logger.error(e.getMessage());
            }
        } else {
            if (fi1.getSize() != 0) {
                fi.add(fi1);
                fileUpload = true;
            }
        }
    }

}

From source file:hk.hku.cecid.ebms.admin.listener.PartnershipPageletAdaptor.java

public Hashtable getHashtable(HttpServletRequest request) throws FileUploadException, IOException {
    Hashtable ht = new Hashtable();
    DiskFileUpload upload = new DiskFileUpload();
    List fileItems = upload.parseRequest(request);
    Iterator iter = fileItems.iterator();
    while (iter.hasNext()) {
        FileItem item = (FileItem) iter.next();
        if (item.isFormField()) {
            ht.put(item.getFieldName(), item.getString());
        } else {/*from www . j  av  a2 s .c om*/
            if (item.getName().equals("")) {
                //ht.put(item.getFieldName(), null);
            } else if (item.getSize() == 0) {
                //ht.put(item.getFieldName(), null);
            } else {
                ht.put(item.getFieldName(), item.getInputStream());
            }
        }
    }
    return ht;
}

From source file:com.krawler.esp.servlets.FileImporterServlet.java

public File getfile(HttpServletRequest request, String fileid) throws ServiceException {
    File uploadFile = null;/*www .ja  v  a2  s .  co m*/
    try {
        String destinationDirectory = StorageHandler.GetDocStorePath() + StorageHandler.GetFileSeparator()
                + "importplans";
        File destdir = new File(destinationDirectory);
        if (!destdir.exists()) {
            destdir.mkdir();
        }
        DiskFileUpload fu = new DiskFileUpload();
        String Ext = "";
        List fileItems = null;
        try {
            fileItems = fu.parseRequest(request);
        } catch (FileUploadException e) {
            KrawlerLog.op.warn("Problem While Uploading file :" + e.toString());
        }
        for (Iterator i = fileItems.iterator(); i.hasNext();) {
            FileItem fi = (FileItem) i.next();
            if (!fi.isFormField()) {
                String fileName = null;
                try {
                    fileName = new String(fi.getName().getBytes(), "UTF8");
                    if (fileName.contains(".")) {
                        Ext = fileName.substring(fileName.lastIndexOf("."));
                    }
                    long size = fi.getSize();
                    if (fi.getSize() != 0) {
                        String projid = request.getParameter("projectid");
                        uploadFile = new File(
                                destinationDirectory + StorageHandler.GetFileSeparator() + fileid + Ext);
                        fi.write(uploadFile);
                        fildoc(fileid, fileName, projid, fileid + Ext, AuthHandler.getUserid(request), size);

                    }
                } catch (IOException ex) {
                    KrawlerLog.op.warn("Problem While Reading file :" + ex.toString());
                    throw ServiceException.FAILURE("FileImporterServlet.getfile", ex);
                } catch (ServiceException ex) {
                    KrawlerLog.op.warn("Problem While Reading file :" + ex);
                    throw ServiceException.FAILURE("FileImporterServlet.getfile", ex);
                } catch (Exception ex) {
                    KrawlerLog.op.warn("Problem While Reading file :" + ex.toString());
                    throw ServiceException.FAILURE("FileImporterServlet.getfile", ex);
                }
            } else {
                arrParam.put(fi.getFieldName(), fi.getString());
            }
        }
    } catch (ConfigurationException ex) {
        KrawlerLog.op.warn("Problem Storing Data In DB [FileImporterServlet.storeInDB()]:" + ex);
        throw ServiceException.FAILURE("FileImporterServlet.getfile", ex);
    }
    return uploadFile;
}

From source file:forseti.JUtil.java

@SuppressWarnings("rawtypes")
public static synchronized boolean procesaFicheros(HttpServletRequest req, String dir) {
    boolean res = true;

    try {//from   ww w  . ja v a 2  s  . c o  m
        // construimos el objeto que es capaz de parsear la pericin
        DiskFileUpload fu = new DiskFileUpload();

        // maximo numero de bytes
        fu.setSizeMax(1024 * 512); // 512 K

        //System.out.println("Ponemos el tamao mximo");
        // tamao por encima del cual los ficheros son escritos directamente en disco
        fu.setSizeThreshold(4096);

        // directorio en el que se escribirn los ficheros con tamao superior al soportado en memoria
        fu.setRepositoryPath("/tmp");

        // ordenamos procesar los ficheros
        List fileItems = fu.parseRequest(req);

        if (fileItems == null) {
            //System.out.println("La lista es nula");
            return false;
        }

        //System.out.println("El nmero de ficheros subidos es: " +  fileItems.size());

        // Iteramos por cada fichero

        Iterator i = fileItems.iterator();
        FileItem actual = null;
        //System.out.println("estamos en la iteracin");

        while (i.hasNext()) {
            actual = (FileItem) i.next();
            String fileName = actual.getName();
            //System.out.println("Nos han subido el fichero" + fileName);

            // construimos un objeto file para recuperar el trayecto completo
            File fichero = new File(fileName);
            //System.out.println("El nombre del fichero es " + fichero.getName());

            // nos quedamos solo con el nombre y descartamos el path
            fichero = new File(dir + fichero.getName());

            // escribimos el fichero colgando del nuevo path
            actual.write(fichero);
        }

    } catch (Exception e) {
        System.out.println("Error de Fichero: " + e.getMessage());
        res = false;
    }

    return res;
}