示例#1
0
        private void muestraDatos()
        {
            dgvPercepciones.DataSource = null;
            dgvPercepciones.Columns.Clear();
            dgvDeducciones.DataSource = null;
            dgvDeducciones.Columns.Clear();

            cnx = new SqlConnection(cdn);
            cmd = new SqlCommand();
            cmd.Connection = cnx;

            CalculoNomina.Core.NominaHelper nh = new CalculoNomina.Core.NominaHelper();
            nh.Command = cmd;

            List<CalculoNomina.Core.tmpPagoNomina> lstReciboPercepciones = new List<CalculoNomina.Core.tmpPagoNomina>();
            List<CalculoNomina.Core.tmpPagoNomina> lstReciboDeducciones = new List<CalculoNomina.Core.tmpPagoNomina>();

            CalculoNomina.Core.tmpPagoNomina pnp = new CalculoNomina.Core.tmpPagoNomina();
            pnp.idtrabajador = idTrabajador;
            pnp.fechainicio = _inicioPeriodo.Date;
            pnp.fechafin = _finPeriodo.Date;
            pnp.tipoconcepto = "P";

            CalculoNomina.Core.tmpPagoNomina pnd = new CalculoNomina.Core.tmpPagoNomina();
            pnd.idtrabajador = idTrabajador;
            pnd.fechainicio = _inicioPeriodo.Date;
            pnd.fechafin = _finPeriodo.Date;
            pnd.tipoconcepto = "D";

            try
            {
                cnx.Open();
                lstReciboPercepciones = nh.obtenerDatosRecibo(pnp, _periodo);
                lstReciboDeducciones = nh.obtenerDatosRecibo(pnd, _periodo);
                cnx.Close();

            }
            catch {
                MessageBox.Show("Error: Al obtener la prenomina del trabajador. Se cerrará la ventana","Error");
                this.Dispose();
            }

            if (lstReciboPercepciones.Count != 0)
            {
                string formulaDiasAPagar = "[DiasLaborados]-[Faltas]-[DiasIncapacidad]";

                Conceptos.Core.ConceptosHelper conceptoh = new Conceptos.Core.ConceptosHelper();
                conceptoh.Command = cmd;

                Conceptos.Core.Conceptos c = new Conceptos.Core.Conceptos();
                c.idempresa = GLOBALES.IDEMPRESA;

                List<Conceptos.Core.Conceptos> lstConceptos = new List<Conceptos.Core.Conceptos>();

                CalculoFormula cf = new CalculoFormula(idTrabajador, _inicioPeriodo, _finPeriodo, formulaDiasAPagar);
                int diasAPagar = int.Parse(cf.calcularFormula().ToString());

                try
                {
                    cnx.Open();
                    lstConceptos = conceptoh.obtenerConceptos(c, _periodo);
                    cnx.Close();
                    cnx.Dispose();
                }
                catch (Exception error)
                {
                    MessageBox.Show("Error: Al obtener lista de conceptos. (Función Muestra Datos.)\r\n \r\n" + error.Message, "Error");
                }

                var percepcion = from r in lstReciboPercepciones
                                 join co in lstConceptos on r.idconcepto equals co.id
                                 where co.visible == true && r.cantidad != 0
                                 select new
                                 {
                                     NoConcepto = co.noconcepto,
                                     Concepto = co.concepto,
                                     Importe = r.cantidad
                                 };

                var deduccion = from r in lstReciboDeducciones
                                join co in lstConceptos on r.idconcepto equals co.id
                                where co.visible == true && r.cantidad != 0
                                select new
                                {
                                    NoConcepto = co.noconcepto,
                                    Concepto = co.concepto,
                                    Importe = r.cantidad
                                };

                DataGridViewCellStyle estilo = new DataGridViewCellStyle();
                estilo.Alignment = DataGridViewContentAlignment.MiddleRight;
                estilo.Format = "C2";

                dgvPercepciones.DataSource = percepcion.ToList();
                dgvPercepciones.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
                dgvPercepciones.Columns[0].Width = 10;
                dgvPercepciones.Columns[1].Width = 70;
                dgvPercepciones.Columns[2].Width = 90;
                dgvPercepciones.Columns[2].DefaultCellStyle = estilo;

                dgvDeducciones.DataSource = deduccion.ToList();
                dgvDeducciones.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
                dgvDeducciones.Columns[0].Width = 10;
                dgvDeducciones.Columns[1].Width = 70;
                dgvDeducciones.Columns[2].Width = 90;
                dgvDeducciones.Columns[2].DefaultCellStyle = estilo;

                decimal sumaPercepciones = 0, sumaDeducciones = 0, netoPagar = 0;
                decimal subsidio = lstReciboDeducciones.Where(d => d.noconcepto == 16).Sum(d => d.cantidad);
                foreach (DataGridViewRow fila in dgvPercepciones.Rows)
                {
                    sumaPercepciones += decimal.Parse(fila.Cells[2].Value.ToString());
                }

                foreach (DataGridViewRow fila in dgvDeducciones.Rows)
                {
                    sumaDeducciones += decimal.Parse(fila.Cells[2].Value.ToString());
                }

                sumaPercepciones += subsidio;
                sumaDeducciones = sumaDeducciones - subsidio;

                netoPagar = sumaPercepciones - sumaDeducciones;
                txtPercepciones.Text = "$ " + sumaPercepciones.ToString("#,##0.00");
                txtDeducciones.Text = "$ " + sumaDeducciones.ToString("#,##0.00");
                txtNeto.Text = "$ " + netoPagar.ToString("#,##0.00");

                dgvPercepciones.Columns.Add("dias", "dias");
                if (diasAPagar != 0)
                    dgvPercepciones.Rows[0].Cells[3].Value = diasAPagar.ToString() + " dias";
                if (netoPagar < 0)
                    MessageBox.Show("El neto a pagar es negativo: " + netoPagar.ToString("#,##0.00"), "Información");
            }
        }