private List <NominaOtroPago> contruyeNominaListaOtrosPagos(List <CFDIReciboConcepto> listConceptosOtros)
        {
            NominaOtroPago        otrosPagos     = null;
            List <NominaOtroPago> listOtrosPagos = new List <NominaOtroPago>();

            listConceptosOtros = listConceptosOtros == null ? new List <CFDIReciboConcepto>() : listConceptosOtros;
            if (listConceptosOtros.Count() > 0)
            {
                otrosPagos = new NominaOtroPago();
                //  List<NominaOtroPago> listOtrosPagos = new List<NominaOtroPago>();
                int    i;
                Double totalExento = 0.0, totalGravable = 0.0;
                for (i = 0; i < listConceptosOtros.Count(); i++)
                {
                    if (listConceptosOtros[i].tipoNaturaleza != "CALCULO")
                    {
                        totalExento   = totalExento + listConceptosOtros[i].importeExento;
                        totalGravable = totalGravable + listConceptosOtros[i].importeGravable;
                    }
                }

                listOtrosPagos.Add(contruyeNominaOtroPago(listConceptosOtros));
                totalOtrosPagos = totalExento + totalGravable;

                // otrosPagos = listOtrosPagos;
            }
            return(listOtrosPagos);
        }
        private NominaOtroPago contruyeNominaOtroPago(List <CFDIReciboConcepto> listConceptosOtros)
        {
            NominaOtroPago otroPago = new NominaOtroPago();

            int    i;
            Double total1 = 0.0, total2 = 0.0;

            for (i = 0; i < listConceptosOtros.Count(); i++)
            {
                if (i == 0)
                {
                    total1 = listConceptosOtros[i].importeGravable + listConceptosOtros[i].importeExento;
                }
                if (i == 1)
                {
                    total2 = listConceptosOtros[i].importeExento + listConceptosOtros[i].importeGravable;
                }
            }

            if (total1 < total2)
            {
                otroPago.Clave        = (listConceptosOtros[0].claveConcepto);
                otroPago.Concepto     = (listConceptosOtros[0].descripcionConcepto);
                otroPago.TipoOtroPago = (listConceptosOtros[0].claveSAT);
                otroPago.Importe      = (UtileriasSat.castNumerosToBigDecimal(listConceptosOtros[0].importeExento));

                otroPago.SubsidioAlEmpleo = (creaSubsidioAlEmpleo(total2));
            }

            if (total1 > total2)
            {
                if (listConceptosOtros.Count() == 1)
                {
                    otroPago.Clave        = (listConceptosOtros[0].claveConcepto);
                    otroPago.Concepto     = (listConceptosOtros[0].descripcionConcepto);
                    otroPago.TipoOtroPago = (listConceptosOtros[0].claveSAT);
                    otroPago.Importe      = (UtileriasSat.castNumerosToBigDecimal(listConceptosOtros[0].importeExento));
                }
                else
                {
                    otroPago.Clave        = (listConceptosOtros[1].claveConcepto);
                    otroPago.Concepto     = (listConceptosOtros[1].descripcionConcepto);
                    otroPago.TipoOtroPago = (listConceptosOtros[1].claveSAT);
                    otroPago.Importe      = (UtileriasSat.castNumerosToBigDecimal(listConceptosOtros[1].importeExento));
                }

                otroPago.SubsidioAlEmpleo = (creaSubsidioAlEmpleo(total1));
            }

            /*  otroPago.Clave=(cfdiConceptoPercepcion.claveConcepto);
             * otroPago.Concepto=(cfdiConceptoPercepcion.descripcionConcepto);
             * otroPago.TipoOtroPago=(cfdiConceptoPercepcion.claveSAT);
             * otroPago.Importe=(UtileriasSat.castNumerosToBigDecimal(cfdiConceptoPercepcion.importeExento));
             *
             * otroPago.SubsidioAlEmpleo=(creaSubsidioAlEmpleo(cfdiConceptoPercepcion.importeExento));  ///pendiente
             * ////////        otroPago.setCompensacionSaldosAFavor(creaCompensacionSaldosAFavor());////pendiente
             */
            return(otroPago);
        }
        private List <NominaOtroPago> construyeSinSubsidio()
        {
            //---
            List <NominaOtroPago> listOtrosPagos = new List <NominaOtroPago>();
            NominaOtroPago        otroPago       = new NominaOtroPago();

            otroPago.Clave        = conceptoNominaSubsidio.clave;       //(listConceptosOtros[0].claveConcepto);
            otroPago.Concepto     = conceptoNominaSubsidio.descripcion; //(listConceptosOtros[0].descripcionConcepto);
            otroPago.TipoOtroPago = "002";                              //(listConceptosOtros[0].claveSAT);
            otroPago.Importe      = (UtileriasSat.castNumerosToBigDecimal(0.00));

            otroPago.SubsidioAlEmpleo = (creaSubsidioAlEmpleo(0));
            listOtrosPagos.Add(otroPago);

            return(listOtrosPagos);
        }