예제 #1
0
        protected void Cargar_PLANILLA(string idUser, string idSolicitud)
        {
            string              lugar = "";
            DB_VT_Planilla      regP  = new DB_VT_Planilla();
            VT_Planilla         p     = new VT_Planilla();
            VT_PlanillaDia      pd    = new VT_PlanillaDia();
            VT_SolicitudDestino sd1   = new VT_SolicitudDestino();
            VT_SolicitudDestino sd2   = new VT_SolicitudDestino();
            DB_VT_Solicitud     s1    = new DB_VT_Solicitud();
            DB_AP_Registro_Org  aux   = new DB_AP_Registro_Org();
            DataTable           dt    = new DataTable();
            DataTable           dt1   = new DataTable();
            DataTable           dt2   = new DataTable();
            int     numero            = s1.DB_Numero_Filas_SOLICITUD(idSolicitud);// se modifico query con  'cont>0'
            decimal contdias          = Convert.ToDecimal("0");

            p.Id_Solicitud    = idSolicitud;
            p.Tot_Num_Dias    = 0;
            p.Tot_Num_Dias15  = 0;
            p.Pago_Total      = 0;
            p.Pago_Total15    = 0;
            p.Rc_Iva          = 13; /*********************************************************** OJO AQUI HAY QUE PONER LOS PARAMETROS DE GESTION ******/
            p.Liquido_Pagable = 0;
            p.Num_Cheque      = "0";
            p.Tasa_Cambio     = 0;
            p.Fecha           = DateTime.Now;
            p.Fecha_Atendido  = DateTime.Now;
            p.MontoPorDia     = 1;
            regP.DB_Registrar_PLANILLA(p);
            int idplani = Convert.ToInt32(aux.DB_MaxId("VIAT_PLANILLA", "Id_Planilla"));
            /**************************************************************/
            DB_VT_Solicitud sol = new DB_VT_Solicitud();

            dt = sol.DB_Seleccionar_SOLICITUD(idSolicitud);
            /************************************************************/
            DB_AdminUser us = new DB_AdminUser();

            dt1 = us.DB_Desplegar_USUARIO(idUser);
            /******************************************************/
            DB_VT_Categoria cat  = new DB_VT_Categoria();
            string          aux1 = dt1.Rows[0][11].ToString();
            string          aux2 = dt.Rows[0][3].ToString();

            dt2 = cat.DB_Seleccionar_CATEGORIA(Convert.ToInt32(dt1.Rows[0][11].ToString()), dt.Rows[0][3].ToString());
            /***************************************************************/
            //DB_VT_Solicitud sol = new DB_VT_Solicitud();
            int contador = 1;
            int auxiliar = 0;

            for (int i = 1; i <= (numero); i++)
            {
                sd1 = s1.DB_Seleccionar_SOLICITUD_DESTINO(idSolicitud, i);
                sd2 = s1.DB_Seleccionar_SOLICITUD_DESTINO(idSolicitud, (i + 1));
                int dias = sol.DB_NumDHM(Convert.ToDateTime(sd1.Fecha_Salida.ToString()), Convert.ToDateTime(sd2.Fecha_Salida.ToString()), "DD");
                if (sd1.Fecha_Salida.ToString("dd/MM/yyyy") == sd2.Fecha_Salida.ToString("dd/MM/yyyy"))
                {
                    if (numero == 2)
                    {
                        contdias       = Convert.ToDecimal("0.5");
                        pd.Id_Planilla = idplani;
                        pd.Cont        = contador;
                        pd.Num_Dias    = contdias;
                        if (sd1.Zona == "Interdepartamental")
                        {
                            pd.Area  = "Interdepartamental";
                            pd.Monto = contdias * Convert.ToDecimal(dt2.Rows[0][3].ToString());
                        }
                        else
                        {
                            pd.Area  = "Al interior del Departamento";
                            pd.Monto = contdias * Convert.ToDecimal(dt2.Rows[0][4].ToString());
                        }
                        pd.Destino     = sd1.Destino + " " + sd1.Lugar;
                        pd.Observacion = "SIN PERNOCTE";
                        pd.FechaDia    = sd1.Fecha_Salida;
                        regP.DB_Registrar_PLANILLADIA(pd);
                        contador++;
                        break;
                    }
                    else
                    {
                        pd.Destino = sd1.Destino + " " + sd1.Lugar;
                    }
                }
                else
                {
                    if (sd1.Tramo == "Salida")
                    {
                        contdias = s1.DB_NumDHM(sd1.Fecha_Salida, sd2.Fecha_Salida, "DD");
                        for (int j = 0; j < contdias; j++)
                        {
                            pd.Id_Planilla = idplani;
                            pd.Cont        = contador;
                            pd.Num_Dias    = 1;
                            if (sd1.Zona == "Interdepartamental")
                            {
                                pd.Area  = "Interdepartamental";
                                pd.Monto = 1 * Convert.ToDecimal(dt2.Rows[0][3].ToString());
                            }
                            else
                            {
                                pd.Area  = "Al interior del Departamento";
                                pd.Monto = 1 * Convert.ToDecimal(dt2.Rows[0][4].ToString());
                            }
                            pd.Destino     = sd1.Destino + " " + sd1.Lugar;
                            pd.Observacion = "CON PERNOCTE";
                            pd.FechaDia    = sd1.Fecha_Salida.AddDays(j);
                            regP.DB_Registrar_PLANILLADIA(pd);
                            auxiliar = j;
                            contador++;
                        }
                    }
                    else
                    {
                        contdias = s1.DB_NumDHM(Convert.ToDateTime(sd1.Fecha_Salida.ToString("dd/MM/yyyy") + " " + "08:00:00"), sd1.Fecha_Salida, "HH");
                        if (contdias > 4) /*************************************** OJO aqui calculamos por hora mayor a 4 horas se contabiliza como medio dia*/
                        {
                            contdias       = Convert.ToDecimal("0.5");
                            pd.Id_Planilla = idplani;
                            pd.Cont        = contador;
                            pd.Num_Dias    = contdias;
                            if (sd1.Zona == "Interdepartamental")
                            {
                                pd.Area  = "Interdepartamental";
                                pd.Monto = contdias * Convert.ToDecimal(dt2.Rows[0][3].ToString());
                            }
                            else
                            {
                                pd.Area  = "Al interior del Departamento";
                                pd.Monto = contdias * Convert.ToDecimal(dt2.Rows[0][4].ToString());
                            }
                            pd.Destino     = sd1.Destino + " " + sd1.Lugar;
                            pd.Observacion = "SIN PERNOCTE";
                            pd.FechaDia    = sd1.Fecha_Salida.AddDays(0);
                            regP.DB_Registrar_PLANILLADIA(pd);
                            contador++;
                        }
                        else
                        {
                            contdias       = Convert.ToDecimal("0.0");
                            pd.Id_Planilla = idplani;
                            pd.Cont        = contador;
                            pd.Num_Dias    = contdias;
                            if (sd1.Zona == "Interdepartamental")
                            {
                                pd.Area  = "Interdepartamental";
                                pd.Monto = contdias * Convert.ToDecimal(dt2.Rows[0][3].ToString());
                            }
                            else
                            {
                                pd.Area  = "Al interior del Departamento";
                                pd.Monto = contdias * Convert.ToDecimal(dt2.Rows[0][4].ToString());
                            }
                            pd.Destino     = sd1.Destino + " " + sd1.Lugar;
                            pd.Observacion = "No se cumplió el periodo de 4 horas que se considera como  medio día de viatico";
                            pd.FechaDia    = sd1.Fecha_Salida.AddDays(0);
                            regP.DB_Registrar_PLANILLADIA(pd);
                            contador++;
                        }
                    }
                }
            }
        }