Пример #1
0
        //Cambia agencia
        private void ddlAgencia_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            string          agencia = ddlAgencia.SelectedValue;
            DatasToControls bind    = new DatasToControls();

            pnlRuta.Visible = false;
            if (agencia.Length == 0)
            {
                pnlAgencia.Visible = false;
                return;
            }
            string ciudad = DBFunctions.SingleData("SELECT PCIU_CODIGO FROM DBXSCHEMA.MAGENCIA WHERE MAG_CODIGO=" + agencia + ";");

            CargarRutasPrincipales(ciudad);

            lblPlanilla.Text   = Planillas.TraerSiguientePlanillaVirtual();
            pnlAgencia.Visible = true;
        }
Пример #2
0
        //Planillar
        private void btnPlanillar_Click(object sender, System.EventArgs e)
        {
            #region Validaciones Generales
            ArrayList sqlUpd  = new ArrayList();
            string    errores = "";
            string    viaje;
            string    agencia      = ddlAgencia.SelectedValue.Trim().Replace("|", "");
            string    placa        = txtPlaca.Text.Trim();
            long      numDocumento = 0;
            DateTime  fecha        = Convert.ToDateTime(txtFecha.Text);
            string    conductor    = txtConductor.Text.Trim();
            string    relevador    = txtRelevador.Text.Trim();
            relevador = (relevador.Length == 0)?"NULL":"'" + relevador + "'";
            string rutaP             = ddlRutaPrincipal.SelectedValue;
            string nitPlanillaManual = DBFunctions.SingleData("select mnit_nit from dbxschema.mnit where mnit_nombres='Planilla Manual';");

            //Responsable
            string nitResponsable = DBFunctions.SingleData("select mnit_nit from DBXSCHEMA.susuario where susu_login='******';");
            if (nitResponsable.Length == 0)
            {
                Response.Write("<script language='javascript'>alert('El usuario (responsable) no tiene un NIT asignado.');</script>");
                return;
            }

            //Hora
            int hora = (int.Parse(ddlHora.SelectedValue) * 60) + int.Parse(ddlMinuto.SelectedValue);

            //Afiliado
            string afiliado = DBFunctions.SingleData("SELECT MNIT_ASOCIADO FROM DBXSCHEMA.MBUSAFILIADO WHERE MCAT_PLACA='" + placa + "'");
            afiliado = (afiliado.Length == 0)?"NULL":"'" + afiliado + "'";

            //Configuracion
            string configBus = DBFunctions.SingleData("Select MCON_COD from DBXSCHEMA.MBUSAFILIADO WHERE MCAT_PLACA='" + placa + "';");
            if (configBus.Length == 0)
            {
                configBus = "NULL";
            }

            string planilla = Planillas.TraerSiguientePlanillaVirtual();
            viaje = Viajes.TraerSiguienteViaje(rutaP);
            //Insertar viaje
            sqlUpd.Add("INSERT INTO dbxschema.MVIAJE values('" + rutaP + "'," + viaje + ",'" + fecha.ToString("yyyy-MM-dd") + "'," + hora + ",NULL," + agencia + ",'" + placa + "'," + configBus + ",'" + conductor + "'," + relevador + ",NULL," + afiliado + ",'" + nitResponsable + "'," + hora + ",NULL,NULL,NULL,NULL,NULL,'A',NULL);");

            //Insertar papeleria
            sqlUpd.Add("INSERT INTO DBXSCHEMA.MCONTROL_PAPELERIA  VALUES('PLA'," + planilla + ",'V',0,'" + DateTime.Now.ToString("yyyy-MM-dd") + "',0," + agencia + ",'" + DateTime.Now.ToString("yyyy-MM-dd") + "','" + nitResponsable + "',0,'" + DateTime.Now.ToString("yyyy-MM-dd") + "',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'" + DateTime.Now.ToString("yyyy-MM-dd") + "');");
            //Insertar planilla
            sqlUpd.Add("insert into dbxschema.mplanillaviaje values(" + planilla + ",'" + rutaP + "'," + viaje + "," + agencia + ",'" + nitResponsable + "','" + fecha.ToString("yyyy-MM-dd") + "',NULL,NULL,NULL,0,0,NULL);");
            #endregion

            //Fila real y actual
            int fila = 1, linea = 1;
            //Totales
            double totalTiquetes = 0, valorSeguro;
            //Seguro
            try
            {
                valorSeguro = Convert.ToDouble(DBFunctions.SingleData("SELECT VALOR_SEGURO FROM DBXSCHEMA.CTRANSPORTES;"));
            }
            catch
            {
                valorSeguro = 0;
            }
            #region Tiquetes
            int prefijo = 0, totalPasajeros = 0;

            //Prefijo tiquetes
            if (ddlAgencia.SelectedValue.EndsWith("|"))
            {
                prefijo = Convert.ToInt16(agencia);
            }

            numDocumento = Convert.ToInt64(Tiquetes.TraerSiguienteTiqueteVirtual());
            foreach (DataGridItem dgrI in dgrTiquetes.Items)
            {
                bool         errLin               = false;
                DropDownList ddlDestino           = (DropDownList)dgrI.FindControl("ddlDestinoTiquete");
                TextBox      txtCantidadTiquete   = (TextBox)dgrI.FindControl("txtCantidadTiquete");
                TextBox      txtValorTiquete      = (TextBox)dgrI.FindControl("txtValorTiquete");
                TextBox      txtTotalTiquete      = (TextBox)dgrI.FindControl("txtTotalTiquete");
                CheckBox     chkAnula             = (CheckBox)dgrI.FindControl("chkAnlulado");
                DropDownList ddlConceptoAnulacion = (DropDownList)dgrI.FindControl("ddlConceptoAnulacion");

                if ((ddlDestino.SelectedValue.Length > 0 || txtCantidadTiquete.Text.Trim().Length > 0 || txtValorTiquete.Text.Trim().Length > 0))
                {
                    int    cantidad = 0;
                    double precio   = 0;
                    bool   anula    = false;
                    string ruta     = ddlDestino.SelectedValue;
                    //Ruta
                    if (ruta.Length == 0)
                    {
                        errores += "Destino de tiquete no válido en la línea " + fila + ". "; errLin = true;
                    }

                    //Cantidad
                    try{
                        cantidad = int.Parse(txtCantidadTiquete.Text.Replace(",", "").Trim());
                    }
                    catch {
                        errores += "Cantidad de tiquetes no válida en la línea " + fila + ". "; errLin = true;
                    }

                    //Precio
                    try{
                        precio = double.Parse(txtValorTiquete.Text.Replace(",", "").Trim());
                        if (precio <= 0)
                        {
                            throw(new Exception());
                        }
                    }
                    catch {
                        errores += "Precio de tiquete no válido en la línea " + fila + ". ";
                        errLin   = true;
                    }

                    //Anulado?
                    if (!errLin && chkAnula.Checked)
                    {
                        if (ddlConceptoAnulacion.SelectedValue.Length == 0)
                        {
                            errores += "Debe seleccionar la causa de la anulacion en la línea " + fila + ". ";
                            errLin   = true;
                        }
                        else
                        {
                            anula = true;
                        }
                    }

                    //Verificar rango precio
                    if (!errLin)
                    {
                        if (!DBFunctions.RecordExist("SELECT MRUT_VALSUG FROM DBXSCHEMA.MRUTAS WHERE MRUT_VALMAX>=" + precio + " AND MRUT_VALMIN<=" + precio + " AND MRUT_CODIGO='" + ruta + "';"))
                        {
                            txtValorTiquete.Text = Convert.ToDouble(DBFunctions.SingleData("SELECT MRUT_VALMAX FROM DBXSCHEMA.MRUTAS WHERE MRUT_CODIGO='" + ruta + "';")).ToString("###,###,##0.##");
                            errores      += "Precio de tiquete fuera del rango válido en la línea " + fila + ", el precio ha sido remplazado. ";
                            strActScript += "totalTicketes('" + txtCantidadTiquete.ClientID + "','" + txtValorTiquete.ClientID + "','" + txtTotalTiquete.ClientID + "',1);";
                            errLin        = true;
                        }
                    }


                    //Insertar tiquete
                    if (!errLin)
                    {
                        sqlUpd.Add("INSERT INTO DBXSCHEMA.MCONTROL_PAPELERIA  VALUES('TIQ'," + numDocumento + ",'V',0,'" + DateTime.Now.ToString("yyyy-MM-dd") + "',0," + agencia + ",'" + DateTime.Now.ToString("yyyy-MM-dd") + "','" + nitResponsable + "',0,'" + DateTime.Now.ToString("yyyy-MM-dd") + "',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'" + DateTime.Now.ToString("yyyy-MM-dd") + "');");
                        if (anula)
                        {
                            //ANULAR
                            sqlUpd.Add("INSERT INTO dbxschema.mtiquete_viaje values('TIQ'," + numDocumento + "," + planilla + "," + linea + ",'" + ruta + "','" + nitResponsable + "'," + cantidad + ",'" + nitPlanillaManual + "'," + valorSeguro.ToString("0") + "," + precio + "," + precio * cantidad + ",'" + fecha.ToString("yyyy-MM-dd") + "','A');");
                            sqlUpd.Add("INSERT INTO dbxschema.MTIQUETE_VIAJE_ANULADO values('TIQ'," + numDocumento + "," + ddlConceptoAnulacion.SelectedValue + ",'" + fecha.ToString("yyyy-MM-dd") + "','" + nitResponsable + "','" + DateTime.Now.ToString("yyyy-MM-dd") + "');");
                            sqlUpd.Add("UPDATE DBXSCHEMA.MCONTROL_PAPELERIA SET NUM_ANULACION=0, COD_ANULACION=" + ddlConceptoAnulacion.SelectedValue + ",MNIT_ANULACION='" + nitResponsable + "', FECHA_ANULACION='" + DateTime.Now.ToString("yyyy-MM-dd") + "' WHERE TDOC_CODIGO='TIQ' AND NUM_DOCUMENTO=" + numDocumento + ";");
                        }
                        else
                        {
                            sqlUpd.Add("INSERT INTO dbxschema.mtiquete_viaje values('TIQ'," + numDocumento + "," + planilla + "," + linea + ",'" + ruta + "','" + nitResponsable + "'," + cantidad + ",'" + nitPlanillaManual + "'," + valorSeguro.ToString("0") + "," + precio + "," + precio * cantidad + ",'" + fecha.ToString("yyyy-MM-dd") + "','V');");
                            totalTiquetes  += cantidad * precio;
                            totalPasajeros += cantidad;
                        }
                        //Modificar papeleria(usada)
                        sqlUpd.Add("UPDATE DBXSCHEMA.MCONTROL_PAPELERIA SET FECHA_USO='" + DateTime.Now.ToString("yyyy-MM-dd") + "',MPLA_CODIGO=" + planilla + " WHERE TDOC_CODIGO='TIQ' AND NUM_DOCUMENTO=" + numDocumento + ";");
                        dgrI.Cells[0].BackColor = dgrI.Cells[1].BackColor;
                        linea++;
                    }
                    else
                    {
                        dgrI.Cells[0].BackColor = System.Drawing.Color.DarkSalmon;
                        if (errores.Length > 0)
                        {
                            errores += "\\r\\n";
                        }
                    }
                    numDocumento++;
                }
                else
                {
                    dgrI.Cells[0].BackColor = dgrI.Cells[1].BackColor;
                }
                fila++;
            }
            #endregion


            if (errores.Length == 0)
            {
                //Actualizar VIAJE
                sqlUpd.Add("UPDATE dbxschema.MVIAJE SET VALOR_INGRESOS=" + (totalTiquetes) + ", VALOR_EGRESOS=0, ESTADO_VIAJE='T', FECHA_LIQUIDACION='" + fecha.ToString("yyyy-MM-dd") + "' WHERE MRUT_CODIGO='" + rutaP + "' AND MVIAJE_NUMERO=" + viaje + ";");
                //Actualizar PLANILLA: NO. LINEAS, FECHA LIQUID, INGRESOS, EGRESOS, NO. LINEAS
                sqlUpd.Add("UPDATE dbxschema.MPLANILLAVIAJE SET VALOR_INGRESOS=" + (totalTiquetes) + ", VALOR_EGRESOS=0, NUMERO_LINEAS=" + linea + ", FECHA_LIQUIDACION='" + fecha.ToString("yyyy-MM-dd") + "' WHERE MPLA_CODIGO=" + planilla + ";");
                //Actualizar PAPELERIA PLANILLA
                sqlUpd.Add("UPDATE DBXSCHEMA.MCONTROL_PAPELERIA SET FECHA_USO='" + DateTime.Now.ToString("yyyy-MM-dd") + "' WHERE TDOC_CODIGO='PLA' AND NUM_DOCUMENTO=" + planilla + ";");
                if (DBFunctions.Transaction(sqlUpd))
                {
                    Response.Redirect(indexPage + "?process=Comercial.PlanillaBus&path=" + Request.QueryString["path"] + "&pln=" + planilla);
                }
                else
                {
                    lblError.Text = DBFunctions.exceptions;
                }
            }
            else
            {
                strActScript += "alert('" + errores + "');";
            }
        }
Пример #3
0
        //Guardar
        private void btnGuardar_Click(object sender, System.EventArgs e)
        {
            string ruta = ddlRuta.SelectedValue, agencia = ddlAgencia.SelectedValue, programacion = ddlProgramacion.SelectedValue, configuracion = ddlConfiguracion.SelectedValue, fecha = txtFecha.Text, conductor = txtConductor.Text, relevador1 = txtRelevador1.Text, relevador2 = "", afiliado = "", viajePadre = ddlNumViajePadre.SelectedValue;
            int    numPuestosLibres = 0;
            //string secOrig="",secDes="";
            bool agenciaDePaso = false;

            //Configuracion
            if (configuracion.Length == 0 && txtNumeroBus.Text.Length == 0)
            {
                Utils.MostrarAlerta(Response, "Debe seleccionar la Configuración O Numero Bus");
                return;
            }

            //configuracion..
            string placa = "";

            //Bus
            if (txtNumeroBus.Text.Length > 0)
            {
                placa = DBFunctions.SingleData("SELECT MCAT_PLACA FROM DBXSCHEMA.MBUSAFILIADO WHERE TESTA_CODIGO>0 AND MBUS_NUMERO=" + txtNumeroBus.Text.Trim() + ";");
                if (placa.Length == 0)
                {
                    Utils.MostrarAlerta(Response, "No existe el bus seleccionado o Inactivo.");
                    return;
                }
                string configuracionBus = DBFunctions.SingleData("SELECT MCON_COD FROM DBXSCHEMA.MBUSAFILIADO WHERE MCAT_PLACA ='" + placa + "';");
                if (configuracion.Length > 0)
                {
                    if (configuracionBus != configuracion)
                    {
                        Utils.MostrarAlerta(Response, "La configuracion no corresponde a la del bus.");
                        return;
                    }
                }
                configuracion = configuracionBus;
                ddlConfiguracion.SelectedIndex = ddlConfiguracion.Items.IndexOf(ddlConfiguracion.Items.FindByValue(configuracionBus));
            }

            if (!DBFunctions.RecordExist("SELECT mele_numepues FROM dbxschema.dconfiguracionbus WHERE mcon_cod=" + configuracion + ";"))
            {
                Utils.MostrarAlerta(Response, "La configuración no ha sido diseñada.");
                return;
            }
            placa = (placa.Length == 0)?"NULL":"'" + placa + "'";
            //Configuracion

            //if(configuracion.Length==0){
            //	Response.Write("<script language='javascript'>alert('El bus no tiene una configuración asociada.');</script>");
            //	return;
            //}

            //Viaje
            string viaje = Viajes.TraerSiguienteViaje(ruta);

            if (viaje.Length == 0)
            {
                viaje = "1";
            }
            //Ruta
            if (ruta.Length == 0)
            {
                Utils.MostrarAlerta(Response, "Debe seleccionar la ruta.");
                return;
            }
            //Ruta padre
            if (viajePadre.Length > 0)
            {
                // ya fue asociada al viaje padre la agencia?
                if (DBFunctions.RecordExist("SELECT mviaje_numero FROM mviaje " +
                                            "WHERE mrut_codigo='" + ruta + "' and mag_codigo=" + agencia + " and MVIAJE_PADRE=" + viajePadre + ";"))
                {
                    Utils.MostrarAlerta(Response, "Ya se ha asociado el viaje padre " + viajePadre + " a la ruta " + ruta + ", en la agencia " + agencia + ".");
                    return;
                }
                //Es el mismo  bus?
                if (!DBFunctions.RecordExist("SELECT mviaje_numero FROM dbxschema.mviaje " +
                                             "WHERE MRUT_CODIGO='" + ruta + "' and mviaje_numero=" + viajePadre + " and mcat_placa=" + placa + " or MRUT_CODIGO='" + ruta + "' and mviaje_numero=" + viajePadre + " and mcat_placa is null;"))
                {
                    Utils.MostrarAlerta(Response, "El vehiculo del viaje padre no es el mismo.");
                    return;
                }
            }
            //Ya existe planilla activa similar?
            if (placa != "NULL")
            {
                if (DBFunctions.RecordExist(
                        "SELECT * FROM DBXSCHEMA.MPLANILLAVIAJE MP,DBXSCHEMA.MVIAJE MV " +
                        "WHERE MP.FECHA_LIQUIDACION IS NULL AND FECHA_SALIDA = '" + fecha + "' and " +
                        "MP.MRUT_CODIGO=MV.MRUT_CODIGO AND MP.MVIAJE_NUMERO=MV.MVIAJE_NUMERO AND " +
                        "MP.MRUT_CODIGO='" + ruta + "' AND MV.MCAT_PLACA=" + placa + " AND MP.MAG_CODIGO=" + agencia + ";"))
                {
                    Utils.MostrarAlerta(Response, "Ya existe una planilla activa para la agencia con el número de bus y la ruta dados.");
                    return;
                }
            }
            //Agencia
            if (agencia.Length == 0)
            {
                Utils.MostrarAlerta(Response, "Debe seleccionar una agencia.");
                return;
            }
            //Configuracion
            if (!DBFunctions.RecordExist("SELECT mele_numepues FROM dbxschema.dconfiguracionbus WHERE mcon_cod=" + configuracion + ";"))
            {
                Utils.MostrarAlerta(Response, "La configuración del bus no ha sido diseñada.");
                return;
            }
            //Horario
            if (lstFecha.SelectedIndex < 0)
            {
                if (ddlHora.SelectedIndex < 0 && ddlMinuto.SelectedIndex < 0)

                {
                    Utils.MostrarAlerta(Response, "Debe seleccionar un horario. o digitar la hora");
                    return;
                }
            }
            //Fecha
            DateTime fechaT = DateTime.Now;

            try{
                string [] prFch  = fecha.Split("-".ToCharArray());
                DateTime  fechaN = DateTime.Now;
                fechaT = new DateTime(int.Parse(prFch[0]), int.Parse(prFch[1]), int.Parse(prFch[2]));
                if (fechaT.CompareTo(new DateTime(fechaN.Year, fechaN.Month, fechaN.Day)) < 0)
                {
                    throw(new Exception());
                }
            }
            catch {
                Utils.MostrarAlerta(Response, "Fecha no válida, debe tener el formato aaaa-mm-dd y ser mayor o igual a la fecha actual.");
                return;
            }
            //Programado?
            bool programado = programacion.Length > 0;
            int  horaProg;

            if (programado)
            {
                //el dia es válido?
                if (lstFecha.SelectedIndex == -1)
                {
                    Utils.MostrarAlerta(Response, "Debe dar el horario si asigna una programación.");
                    return;
                }
                int     posDia   = (fechaT.DayOfWeek == DayOfWeek.Monday?0:(fechaT.DayOfWeek == DayOfWeek.Tuesday?1:(fechaT.DayOfWeek == DayOfWeek.Wednesday?2:(fechaT.DayOfWeek == DayOfWeek.Thursday?3:(fechaT.DayOfWeek == DayOfWeek.Friday?4:(fechaT.DayOfWeek == DayOfWeek.Saturday?5:6))))));
                DataSet dsCuadro = new DataSet();
                DBFunctions.Request(dsCuadro, IncludeSchema.NO, "SELECT MRUT_LUNES,MRUT_MARTES,MRUT_MIERCOLES,MRUT_JUEVES,MRUT_VIERNES,MRUT_SABADO,MRUT_DOMINGO FROM DBXSCHEMA.MRUTA_CUADRO WHERE MRUT_CODIGO='" + ruta + "' AND MRUT_HORA=" + lstFecha.SelectedValue + " AND TPROG_TIPOPROG=" + programacion);
                if (dsCuadro.Tables[0].Rows.Count == 0 || !dsCuadro.Tables[0].Rows[0][posDia].ToString().Equals("S"))
                {
                    Utils.MostrarAlerta(Response, "La fecha seleccionada (día " + dias[posDia].ToLower() + ") no existe en el horario seleccionado.");
                    return;
                }
                horaProg = int.Parse(lstFecha.SelectedValue);
            }
            else
            {
                //Hora
                try
                {
                    horaProg = int.Parse(ddlHora.SelectedValue) * 60 + int.Parse(ddlMinuto.SelectedValue);
                }
                catch
                {
                    Utils.MostrarAlerta(Response, "Hora no valida.");
                    return;
                }
                programacion = "NULL";
            }

            //Puestos libres deben indicarse si no se asocio a un viaje padre
            if (viajePadre.Length == 0 && !DBFunctions.RecordExist(
                    "select * from dbxschema.magencia ma, dbxschema.mrutas mr " +
                    "where ma.pciu_codigo=mr.pciu_cod and mr.mrut_codigo='" + ruta + "' and ma.mag_codigo=" + agencia))
            {
                agenciaDePaso = true;
                try
                {
                    numPuestosLibres = Convert.ToInt32(txtPuestos.Text.Trim());
                    if (numPuestosLibres < 0)
                    {
                        throw new Exception();
                    }
                }
                catch
                {
                    Utils.MostrarAlerta(Response, "Debe dar el número de puestos libres y este debe ser un número entero menor o igual a la capacidad del bus seleccionado.");
                    return;
                }
                if (numPuestosLibres > Convert.ToInt32(DBFunctions.SingleData("SELECT COUNT(*) FROM DBXSCHEMA.DCONFIGURACIONBUS WHERE MCON_COD=" + configuracion + " AND TELE_CODIGO='SP';")))
                {
                    Utils.MostrarAlerta(Response, "El número de puestos libres supera la cantidad de puestos en el diseño de la configuración.");
                    return;
                }
            }

            //Conductor/relevadores
            if (conductor.Length > 0 && (conductor.Equals(relevador1) || conductor.Equals(relevador2)))
            {
                Utils.MostrarAlerta(Response, "El conductor y los relevadores no pueden ser la misma persona.");
                return;
            }
            if (relevador1.Length > 0 && relevador1.Equals(relevador2))
            {
                Utils.MostrarAlerta(Response, "Los relevadores no pueden ser la misma persona.");
                return;
            }
            //Validar conductor
            if (conductor.Length > 0 && !DBFunctions.RecordExist("Select MNIT_NIT FROM DBXSCHEMA.MEMPLEADO WHERE MNIT_NIT='" + conductor + "' AND PCAR_CODICARGO='CO'"))
            {
                Utils.MostrarAlerta(Response, "No se encontro el conductor.");
                return;
            }
            if (conductor.Length == 0 && relevador1.Length == 0)
            {
                Utils.MostrarAlerta(Response, "Debe dar el conductor o el relevador.");
                return;
            }
            //Afiliado
            if (placa != "NULL" && placa != "")
            {
                afiliado = DBFunctions.SingleData("SELECT MNIT_ASOCIADO FROM DBXSCHEMA.MBUSAFILIADO WHERE MCAT_PLACA=" + placa + ";");
            }
            else
            {
                afiliado = "";
            }
            if (conductor == ConfigurationManager.AppSettings["ConductorRelevadorComodin"])
            {
                conductor = "";
            }
            if (relevador1 == ConfigurationManager.AppSettings["ConductorRelevadorComodin"])
            {
                relevador1 = "";
            }

            afiliado = (afiliado.Length == 0)?"NULL":"'" + afiliado + "'";
            //Conductor
            conductor = (conductor.Length == 0?"NULL":"'" + conductor + "'");
            //Relevador1
            relevador1 = (relevador1.Length == 0?"NULL":"'" + relevador1 + "'");
            //Relevador2
            relevador2 = (relevador2.Length == 0?"NULL":"'" + relevador2 + "'");
            //Viaje padre
            viajePadre = (viajePadre.Length == 0?"NULL":ddlNumViajePadre.SelectedValue);

            ArrayList sqlC = new ArrayList();

            //Insertar registro
            sqlC.Add("insert into dbxschema.mviaje values('" + ruta + "'," + viaje + ",'" + fechaT.ToString("yyyy-MM-dd") + "'," + horaProg + "," + programacion + "," + agencia + "," + placa + "," + configuracion + "," + conductor + "," + relevador1 + "," + relevador2 + "," + afiliado + ",NULL,NULL,NULL,NULL,NULL,NULL,NULL,'A'," + viajePadre + ")");
            if (!viajePadre.Equals("NULL"))
            {
                sqlC.Add("update dbxschema.mviaje set mviaje_padre=" + viajePadre + " where mrut_codigo='" + ruta + "' and mviaje_numero=" + viajePadre + ";");
            }
            //Guardar configuracion puestos
            int fil = int.Parse(DBFunctions.SingleData("SELECT MBUS_FILAS FROM DBXSCHEMA.MCONFIGURACIONBUS WHERE MCON_COD=" + configuracion));
            int col = int.Parse(DBFunctions.SingleData("SELECT MBUS_COLUMNAS FROM DBXSCHEMA.MCONFIGURACIONBUS WHERE MCON_COD=" + configuracion));

            //borrar anteriores
            sqlC.Add("delete from DBXSCHEMA.MCONFIGURACIONPUESTO WHERE MRUT_CODIGO='" + ruta + "' AND MVIAJE_NUMERO=" + viaje + ";");

            //insertar disponibles
            sqlC.Add("insert into DBXSCHEMA.MCONFIGURACIONPUESTO " +
                     "SELECT '" + ruta + "', " + viaje + ", mpue_posfila, mpue_poscolumna,mele_numepues,tele_codigo,'DN', cast(null as varchar(10)), cast(null as integer) " +
                     "FROM DCONFIGURACIONBUS WHERE MCON_COD=" + configuracion + ";");

            //Responsable
            string nitResponsable = DBFunctions.SingleData("select mnit_nit from DBXSCHEMA.susuario where susu_login='******';");

            if (nitResponsable.Length == 0)
            {
                Utils.MostrarAlerta(Response, "El usuario (responsable) no tiene un NIT asignado.");
                return;
            }

            //Planilla
            string planilla = Planillas.TraerSiguientePlanillaVirtual();

            //Insertar papeleria
            sqlC.Add("INSERT INTO DBXSCHEMA.MCONTROL_PAPELERIA  VALUES('PLA'," + planilla + ",'V',0,'" + DateTime.Now.ToString("yyyy-MM-dd") + "',0," + agencia + ",'" + DateTime.Now.ToString("yyyy-MM-dd") + "','" + nitResponsable + "',0,'" + DateTime.Now.ToString("yyyy-MM-dd") + "',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "');");

            //Crear planilla
            sqlC.Add("insert into dbxschema.mplanillaviaje values(" + planilla + ",'" + ruta + "'," + viaje + "," + agencia + ",'" + nitResponsable + "','" + fechaT.ToString("yyyy-MM-dd") + "',NULL,NULL,NULL,0," + numPuestosLibres + ",NULL);");

            //Crear planilla gemela si aplica
            DataSet dsGemela = new DataSet();

            DBFunctions.Request(dsGemela, IncludeSchema.NO, "SELECT MRUT_CODIGO,MRUT_CODIGO1,MRUT_CODIGO2 FROM DBXSCHEMA.MRUTAS_DOBLE_PLANILLA WHERE MRUT_CODIGO='" + ruta + "';");
            if (dsGemela.Tables[0].Rows.Count > 0)
            {
                sqlC.Add("INSERT INTO DBXSCHEMA.MPLANILLA_VIAJE_GEMELA VALUES (DEFAULT," + planilla + ",'" + dsGemela.Tables[0].Rows[0]["MRUT_CODIGO1"] + "',DEFAULT);");
                sqlC.Add("INSERT INTO DBXSCHEMA.MPLANILLA_VIAJE_GEMELA VALUES (DEFAULT," + planilla + ",'" + dsGemela.Tables[0].Rows[0]["MRUT_CODIGO2"] + "',DEFAULT);");
            }

            if (DBFunctions.Transaction(sqlC))
            {
                //Ocupar puestos si es de paso
                if (agenciaDePaso)
                {
                    int     pUsados   = 0;
                    DataSet dsPuestos = new DataSet();
                    sqlC = new ArrayList();
                    DBFunctions.Request(dsPuestos, IncludeSchema.NO, "SELECT FILA,COLUMNA,TELE_CODIGO FROM DBXSCHEMA.MCONFIGURACIONPUESTO WHERE MRUT_CODIGO='" + ruta + "' AND MVIAJE_NUMERO=" + viaje + ";");
                    foreach (DataRow drP in dsPuestos.Tables[0].Rows)
                    {
                        if (drP["TELE_CODIGO"].ToString().Equals("SP"))
                        {
                            pUsados++;
                        }
                        if (pUsados > numPuestosLibres)
                        {
                            sqlC.Add("update DBXSCHEMA.MCONFIGURACIONPUESTO SET TEST_CODIGO='OC' WHERE MRUT_CODIGO='" + ruta + "' AND MVIAJE_NUMERO=" + viaje + " AND FILA=" + drP["FILA"] + " AND COLUMNA=" + drP["COLUMNA"] + ";");
                        }
                    }
                    DBFunctions.Transaction(sqlC);
                }
                if (Tools.Browser.IsMobileBrowser())
                {
                    Response.Redirect(ConfigurationManager.AppSettings["MainMobileIndexPage"] + "?process=Comercial.VentaTiquetesMovil&act=1&path=Venta Tiquetes&num=" + viaje + "&pla=" + planilla);
                }
                else
                {
                    Response.Redirect(ConfigurationManager.AppSettings["MainIndexPage"] + "?process=Comercial.VentaTiquetes&act=1&path=Venta Tiquetes&num=" + viaje + "&pla=" + planilla);
                }
            }
            else
            {
                lblError.Text = DBFunctions.exceptions;
            }
        }