예제 #1
0
        public static void CalculoDehoras(int IdEmpleado, string Mes, NomiProEntities db)

        {
            var    cargos       = db.CARGOS.FirstOrDefault(c => c.ID_Cargos == (db.EMPLEADOS.FirstOrDefault(e => e.ID_Emple == IdEmpleado).ID_Cargos));
            double calculoHoras = 0;
            var    controlPago  = db.CONTROL_PAGO.FirstOrDefault(p => p.ID_EmpleCP == IdEmpleado && p.Mes == Mes);

            if (controlPago == null)
            {
                controlPago = db.CONTROL_PAGO.Add(new CONTROL_PAGO()
                {
                    ID_EmpleCP = IdEmpleado,

                    Mes = Mes
                });
            }
            foreach (var item in db.HETRAXEMPLEADO.Where(he => he.ID_Emple ==
                                                         IdEmpleado &&
                                                         he.Mes == Mes))
            {
                var horaExtra = db.HORA_EXTRAS.FirstOrDefault(he => he.ID_HExtras ==
                                                              item.ID_HExtras);
                if (horaExtra.Valor.HasValue && cargos.Valor_cargo.HasValue &&
                    item.Numero_Horas.HasValue && cargos.Valor_cargo.HasValue)
                {
                    //Valor hora fija: suponemos que el valor de la hora es el total

                    //calculoHoras += (horaExtra.Valor.Value) *


                    calculoHoras += ((cargos.Valor_cargo.Value / 192) *
                                     horaExtra.Valor.Value) * item.Numero_Horas.Value;
                }
            }
            controlPago.Valor_Horas_Extra = int.Parse(Math.Round(calculoHoras,
                                                                 0).ToString());
            double calculoParafiscal = 0;

            foreach (var item in db.PARAFISCALES
                     .Where(p => p.Estado == "Activo")

                     .Join(db.PARAXEMPLE.Where(pax => pax.Mes == Mes &&
                                               pax.ID_EmpleP == IdEmpleado), p => p.ID_Parafiscales, pa => pa.ID_Parafiscales,
                           (p, pa) => new { p.Valor })
                     )
            {
                calculoParafiscal += (double.Parse(item.Valor.Value.ToString()) /
                                      100) * cargos.Valor_cargo.Value;
            }
            controlPago.Valor_Parafiscal = int.Parse(Math.Round(calculoParafiscal,
                                                                0).ToString());
            db.SaveChanges();
            CalculoDeNomina(cargos, IdEmpleado, Mes, controlPago, db);
        }
예제 #2
0
        public static void CalculoDeNomina(CARGOS cargo, int IdEmpleado, string Mes,
                                           CONTROL_PAGO controlPago, NomiProEntities db)
        {
            var nomina = db.NOMINA.FirstOrDefault(p => p.ID_EmpleN == IdEmpleado &&
                                                  p.Mes == Mes);

            if (nomina == null)
            {
                nomina = db.NOMINA.Add(new NOMINA()
                {
                    ID_EmpleN = IdEmpleado,

                    Mes = Mes,
                    ID_Control_PagoN = controlPago.ID_Control_Pago,
                    ID_Nomina        = cargo.ID_Cargos,
                    Estado           = "Activo"
                });
            }
            nomina.Subtotal = cargo.Valor_cargo.Value -
                              controlPago.Valor_Parafiscal;
            nomina.Total = nomina.Subtotal + controlPago.Valor_Horas_Extra;
            db.SaveChanges();
        }
예제 #3
0
        public static void CalculoDeHoras(PARAXEMPLE paraxEmple, NomiProEntities db)

        {
            CalculoDehoras(paraxEmple.ID_EmpleP.Value, paraxEmple.Mes, db);
        }
예제 #4
0
        public static void CalculoDeHoras(HETRAXEMPLEADO hExtraxEmpleado, NomiProEntities db)

        {
            CalculoDehoras(hExtraxEmpleado.ID_Emple.Value, hExtraxEmpleado.Mes, db);
        }