private void ProcesarCalculo(IEntityBase value)
        {
            ELiquidacion objE = (ELiquidacion)value;

            EPlanilla objEPla = new EPlanilla();
            EProcPlaCalc objECal = new EProcPlaCalc();
            EProcPlaReg objEReg = new EProcPlaReg();
            EPrestaCuota objECta = new EPrestaCuota();
            EProcPlaRes objERes = new EProcPlaRes();

            RHDOQry.PlanillaDet objDPla = new RHDOQry.PlanillaDet();
            RHDOMnt.ProcPlaCalc objDProc = new RHDOMnt.ProcPlaCalc();
            RHDOQry.ProcPlaReg objDReg = new RHDOQry.ProcPlaReg();
            RHDOMnt.ProcPlaReg objDRegMnt = new RHDOMnt.ProcPlaReg();
            RHDOMnt.PrestaCuota objDCta = new RHDOMnt.PrestaCuota();
            RHDOMnt.ProcPlaRes objDRes = new RHDOMnt.ProcPlaRes();

            objEPla.IdEmpresa = objE.IdEmpresa;
            objEPla.IdPlanilla = objE.IdPlanilla;

            objECal.IdPeriodo = objE.IdPeriodo;
            objECal.IdEmpresa = objE.IdEmpresa;
            objECal.IdForPago = objE.IdForPago;
            objECal.IdPlanilla = objE.IdPlanilla;
            objECal.NuProcAnual = objE.NuProcAnual;
            objECal.StOrigen = ConstTipoRegularizacion.NINGUNO;
            objECal.IdMes = objE.IdMes;
            objECal.IdPersonal = objE.IdPersonal;

            objEReg.IdPeriodo = objE.IdPeriodo;
            objEReg.IdEmpresa = objE.IdEmpresa;
            objEReg.IdForPago = objE.IdForPago;
            objEReg.IdPlanilla = objE.IdPlanilla;
            objEReg.NuProcAnual = objE.NuProcAnual;
            objEReg.IdTipRegula = ConstTipoRegularizacion.REGULARIZACION;
            objEReg.IdPersonal = objE.IdPersonal;

            objECta.IdPeriProc = objE.IdPeriodo;
            objECta.IdEmpresa = objE.IdEmpresa;
            objECta.IdForPago = objE.IdForPago;
            objECta.IdPlanilla = objE.IdPlanilla;
            objECta.NuProcAnual = objE.NuProcAnual;
            objECta.IdPersonal = objE.IdPersonal;

            objERes.IdPeriodo = objE.IdPeriodo;
            objERes.IdEmpresa = objE.IdEmpresa;
            objERes.IdForPago = objE.IdForPago;
            objERes.IdPlanilla = objE.IdPlanilla;
            objERes.NuProcAnual = objE.NuProcAnual;
            objERes.IdPersonal = objE.IdPersonal;

            DataTable dt = objDPla.GetConceptosHabilitados(objEPla);
            DataView dv = new DataView(dt);

            DataTable dtReg = objDReg.GetConceptoRegula(objEReg);

            /*************** Limpiar las tablas para el proceso***************************/

            objDCta.RevierteCuotasCobradasLiquidacion(objECta);
            objDProc.EliminaDatosProcActual(objECal);
            objDProc.EliminaTablasTemp(objECal);

            /*************** Procesar Remuneraciones ***********************************/
            objDProc.CrearTablasTemp(objECal);

            dv.RowFilter = "idTipConcep='" + ConstTipoConcepPlanilla.REMUNERACION + "'";
            dv.Sort = "nuSecuen ASC";
            foreach (DataRowView drv in dv)
            {
                objECal.IdConRemu = drv["idConRemu"].ToString();

                objDProc.ProcCalculoXConcepto(objECal);
            }

            /*************** Procesar Regularizaciones *********************************/
            objDProc.EliminaTablasTemp(objECal);

            objECal.StOrigen = ConstTipoRegularizacion.REGULARIZACION;
            objDProc.CrearTablasTemp(objECal);

            foreach (DataRow dr in dtReg.Rows)
            {
                objECal.IdConRemu = dr["idConRemu"].ToString();
                objDProc.ProcCalculoXConcepto(objECal);
            }

            objDRegMnt.ProcRegulaXMonto(objEReg);

            /*************** Procesar Retenciones/Aportaciones *************************/
            objDProc.EliminaTablasTemp(objECal);

            objECal.StOrigen = ConstTipoRegularizacion.NINGUNO;
            objDProc.CrearTablasTemp(objECal);

            dv.RowFilter = "idTipConcep='" + ConstTipoConcepPlanilla.RETENCION + "'";
            foreach (DataRowView drv in dv)
            {
                objECal.IdConRemu = drv["idConRemu"].ToString();

                objDProc.ProcCalculoXConcepto(objECal);
            }

            dv.RowFilter = "idTipConcep='" + ConstTipoConcepPlanilla.APORTACION + "'";
            foreach (DataRowView drv in dv)
            {
                objECal.IdConRemu = drv["idConRemu"].ToString();

                objDProc.ProcCalculoXConcepto(objECal);
            }

            objDProc.EliminaTablasTemp(objECal);

            /********************* Procesar Prestamos **************************/

            //objDCta.CobrarCuotasXPlanilla(objECta);

            /*************** Procesar Calculos Finales *************************/
            objDRes.EliminaDatosProcActual(objERes);

            objDRes.ProcResultadosCalcActual(objERes);
        }
        public void ProcesarCalculo(IEntityBase value)
        {
            EProcPlaniProcCalc objE = (EProcPlaniProcCalc)value;
             EPlanilla objEPla = new EPlanilla();
             EProcPlaCalc objECal = new EProcPlaCalc();
             EProcPlaReg objEReg = new EProcPlaReg();
             EPrestaCuota objECta = new EPrestaCuota();
             EProcPlaRes objERes = new EProcPlaRes();

             RHDOQry.PlanillaDet objDPla = new RHDOQry.PlanillaDet();
             RHDOMnt.ProcPlaCalc objDProc = new RHDOMnt.ProcPlaCalc();
             RHDOQry.ProcPlaReg objDReg = new RHDOQry.ProcPlaReg();
             RHDOMnt.ProcPlaReg objDRegMnt = new RHDOMnt.ProcPlaReg();
             RHDOMnt.PrestaCuota objDCta = new RHDOMnt.PrestaCuota();
             RHDOMnt.ProcPlaRes objDRes = new RHDOMnt.ProcPlaRes();

             objEPla.IdEmpresa = objE.IdEmpresa;
             objEPla.IdPlanilla = objE.IdPlanilla;

             objECal.IdPeriodo = objE.IdPeriodo;
             objECal.IdEmpresa = objE.IdEmpresa;
             objECal.IdForPago = objE.IdForPago;
             objECal.IdPlanilla = objE.IdPlanilla;
             objECal.NuProcAnual = objE.NuProcAnual;
             objECal.StOrigen = ConstTipoRegularizacion.NINGUNO;
             objECal.IdMes = objE.IdMes;
             objECal.IdPersonal = objE.IdPersonal;

             objEReg.IdPeriodo = objE.IdPeriodo;
             objEReg.IdEmpresa = objE.IdEmpresa;
             objEReg.IdForPago = objE.IdForPago;
             objEReg.IdPlanilla = objE.IdPlanilla;
             objEReg.NuProcAnual = objE.NuProcAnual;
             objEReg.IdTipRegula = ConstTipoRegularizacion.REGULARIZACION;
             objEReg.IdPersonal = objE.IdPersonal;

             objECta.IdPeriProc = objE.IdPeriodo;
             objECta.IdEmpresa = objE.IdEmpresa;
             objECta.IdForPago = objE.IdForPago;
             objECta.IdPlanilla = objE.IdPlanilla;
             objECta.NuProcAnual = objE.NuProcAnual;
             objECta.IdPersonal = objE.IdPersonal;

             objERes.IdPeriodo = objE.IdPeriodo;
             objERes.IdEmpresa = objE.IdEmpresa;
             objERes.IdForPago = objE.IdForPago;
             objERes.IdPlanilla = objE.IdPlanilla;
             objERes.NuProcAnual = objE.NuProcAnual;
             objERes.IdPersonal = objE.IdPersonal;

             DataTable dt = objDPla.GetConceptosHabilitados(objEPla);
             DataView dv = new DataView(dt);

             DataTable dtReg = objDReg.GetConceptoRegula(objEReg);

             try
             {
            using (TransactionScope tx = new TransactionScope())
            {
               /*************** PROCESOS ADICIONALES ***************************/

                switch (objE.IdPlanilla)
                {
                    case ConstPlanilla.GRATIFICACION_EMPLEADO:
                    case ConstPlanilla.GRATIFICACION_OBRERO:
                        /*************** CREAR HORA GRATIFICAICONES ***************************/
                        objDProc.CrearHorasGratificacion(objECal);
                        break;
                    case ConstPlanilla.SUBSIDIO_EMPLEADO:
                    case ConstPlanilla.SUBSIDIO_OBRERO:
                        /*************** CREAR HORA Subsidio ***************************/
                        objDProc.CrearHorasSubsidio(objECal);
                        break;
                }

               /*************** Limpiar las tablas para el proceso***************************/
               objDCta.RevierteCuotasCobradas(objECta);
               objDProc.EliminaDatosProcActual(objECal);
               objDProc.EliminaTablasTemp(objECal);

               /*************** Procesar Remuneraciones ***********************************/
               objDProc.CrearTablasTemp(objECal);

               dv.RowFilter = "idTipConcep='" + ConstTipoConcepPlanilla.REMUNERACION + "'";
               dv.Sort = "nuSecuen ASC";
               foreach (DataRowView drv in dv)
               {
                  objECal.IdConRemu = drv["idConRemu"].ToString();
                  objDProc.ProcCalculoXConcepto(objECal);
               }

               /*************** Procesar Regularizaciones *********************************/
               objDProc.EliminaTablasTemp(objECal);

               objECal.StOrigen = ConstTipoRegularizacion.REGULARIZACION;
               objDProc.CrearTablasTemp(objECal);

               foreach (DataRow dr in dtReg.Rows)
               {
                  objECal.IdConRemu = dr["idConRemu"].ToString();
                  objDProc.ProcCalculoXConcepto(objECal);
               }

               objDRegMnt.ProcRegulaXMonto(objEReg);

               /*************** Procesar Retenciones/Aportaciones *************************/
               objDProc.EliminaTablasTemp(objECal);

               objECal.StOrigen = ConstTipoRegularizacion.NINGUNO;
               objDProc.CrearTablasTemp(objECal);

               dv.RowFilter = "idTipConcep='" + ConstTipoConcepPlanilla.RETENCION + "'";
               foreach (DataRowView drv in dv)
               {
                  objECal.IdConRemu = drv["idConRemu"].ToString();
                  objDProc.ProcCalculoXConcepto(objECal);
               }

               dv.RowFilter = "idTipConcep='" + ConstTipoConcepPlanilla.APORTACION + "'";
               foreach (DataRowView drv in dv)
               {
                  objECal.IdConRemu = drv["idConRemu"].ToString();

                  objDProc.ProcCalculoXConcepto(objECal);
               }

               objDProc.EliminaTablasTemp(objECal);

               /********************* Procesar Prestamos **************************/
               objDCta.CobrarCuotasXPlanilla(objECta);

               /*************** Procesar Calculos Finales *************************/
               objDRes.EliminaDatosProcActual(objERes);

               objDRes.ProcResultadosCalcActual(objERes);

               tx.Complete();

            }
             }
             catch (Exception ex)
             {
            throw ex;
             }
        }
        private ArrayList BuildParamInterface(EProcPlaRes value)
        {
            ArrayList arrPrm = new ArrayList();

             arrPrm.Add(DataHelper.CreateParameter("@pidPeriodo", SqlDbType.Char, 4, value.IdPeriodo));
             arrPrm.Add(DataHelper.CreateParameter("@pidEmpresa", SqlDbType.Char, 3, value.IdEmpresa));
             arrPrm.Add(DataHelper.CreateParameter("@pidForPago", SqlDbType.Char, 3, value.IdForPago));
             arrPrm.Add(DataHelper.CreateParameter("@pidPlanilla", SqlDbType.Char, 3, value.IdPlanilla));
             arrPrm.Add(DataHelper.CreateParameter("@pnuProcAnual", SqlDbType.SmallInt, value.NuProcAnual));
             arrPrm.Add(DataHelper.CreateParameter("@pidPersonal", SqlDbType.Char, 7, value.IdPersonal));
             arrPrm.Add(DataHelper.CreateParameter("@pidMes", SqlDbType.Char, 3, DataHelper.IfNullString(value.IdMes)));
             arrPrm.Add(DataHelper.CreateParameter("@pidTipoTrab", SqlDbType.Char, 3, value.IdTipoTrab));
             arrPrm.Add(DataHelper.CreateParameter("@pidRegLaboral", SqlDbType.Char, 3, value.IdRegLaboral));
             arrPrm.Add(DataHelper.CreateParameter("@pidOcupa", SqlDbType.Char, 6, value.IdOcupa));
             arrPrm.Add(DataHelper.CreateParameter("@pidRegPensi", SqlDbType.Char, 3, value.IdRegPensi));
             arrPrm.Add(DataHelper.CreateParameter("@pfeInscRegPen", SqlDbType.DateTime, (value.FeInscRegPen.HasValue ? (object)value.FeInscRegPen : DBNull.Value)));
             arrPrm.Add(DataHelper.CreateParameter("@pnuCuspp", SqlDbType.Char, 15, value.NuCuspp));
             arrPrm.Add(DataHelper.CreateParameter("@pidSctrSalud", SqlDbType.Char, 3, value.IdSctrSalud));
             arrPrm.Add(DataHelper.CreateParameter("@pidSctrPens", SqlDbType.Char, 3, value.IdSctrPens));
             arrPrm.Add(DataHelper.CreateParameter("@pidTipoCont", SqlDbType.Char, 3, value.IdTipoCont));
             arrPrm.Add(DataHelper.CreateParameter("@pidSegMedi", SqlDbType.Char, 3, value.IdSegMedi));
             arrPrm.Add(DataHelper.CreateParameter("@pidEmpEps", SqlDbType.Char, 7, value.IdEmpEps));
             arrPrm.Add(DataHelper.CreateParameter("@pidSituEmplEps", SqlDbType.Char, 3, value.IdSituEmplEps));
             arrPrm.Add(DataHelper.CreateParameter("@pidSitEsptrab", SqlDbType.Char, 3, value.IdSitEsptrab));
             arrPrm.Add(DataHelper.CreateParameter("@pfeIngPla", SqlDbType.DateTime, (value.FeIngPla.HasValue ? (object)value.FeIngPla : DBNull.Value)));
             arrPrm.Add(DataHelper.CreateParameter("@pfeCese", SqlDbType.DateTime, (value.FeCese.HasValue ? (object)value.FeCese : DBNull.Value)));
             arrPrm.Add(DataHelper.CreateParameter("@pidBcoAbono", SqlDbType.Char, 3, value.IdBcoAbono));
             arrPrm.Add(DataHelper.CreateParameter("@pidTipoCtaAbo", SqlDbType.Char, 3, value.IdTipoCtaAbo));
             arrPrm.Add(DataHelper.CreateParameter("@pnuCtaAbono", SqlDbType.VarChar, 30, value.NuCtaAbono));
             arrPrm.Add(DataHelper.CreateParameter("@pidBcoCts", SqlDbType.Char, 3, value.IdBcoCts));
             arrPrm.Add(DataHelper.CreateParameter("@pnuCtaCts", SqlDbType.VarChar, 30, value.NuCtaCts));
             arrPrm.Add(DataHelper.CreateParameter("@pidCCosto", SqlDbType.Char, 3, value.IdCCosto));
             arrPrm.Add(DataHelper.CreateParameter("@pmtRemu", SqlDbType.Decimal, value.MtRemu));
             arrPrm.Add(DataHelper.CreateParameter("@pmtTotRemuMn", SqlDbType.Decimal, value.MtTotRemuMn));
             arrPrm.Add(DataHelper.CreateParameter("@pmtTotDescMn", SqlDbType.Decimal, value.MtTotDescMn));
             arrPrm.Add(DataHelper.CreateParameter("@pmtTotAportMn", SqlDbType.Decimal, value.MtTotAportMn));
             arrPrm.Add(DataHelper.CreateParameter("@pmtRedAntMn", SqlDbType.Decimal, value.MtRedAntMn));
             arrPrm.Add(DataHelper.CreateParameter("@pmtRedActMn", SqlDbType.Decimal, value.MtRedActMn));
             arrPrm.Add(DataHelper.CreateParameter("@pmtNetoMn", SqlDbType.Decimal, value.MtNetoMn));
             arrPrm.Add(DataHelper.CreateParameter("@pmtTotRemuMe", SqlDbType.Decimal, value.MtTotRemuMe));
             arrPrm.Add(DataHelper.CreateParameter("@pmtTotDescMe", SqlDbType.Decimal, value.MtTotDescMe));
             arrPrm.Add(DataHelper.CreateParameter("@pmtTotAportMe", SqlDbType.Decimal, value.MtTotAportMe));
             arrPrm.Add(DataHelper.CreateParameter("@pmtRedAntMe", SqlDbType.Decimal, value.MtRedAntMe));
             arrPrm.Add(DataHelper.CreateParameter("@pmtRedActMe", SqlDbType.Decimal, value.MtRedActMe));
             arrPrm.Add(DataHelper.CreateParameter("@pmtNetoMe", SqlDbType.Decimal, value.MtNetoMe));

             return arrPrm;
        }