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(EProcPlaReg 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("@pidConRemu", SqlDbType.Char, 3, value.IdConRemu));
             arrPrm.Add(DataHelper.CreateParameter("@pnuHoras", SqlDbType.Decimal, value.NuHoras));
             arrPrm.Add(DataHelper.CreateParameter("@pidTipRegula", SqlDbType.Char, 3, value.IdTipRegula));
             arrPrm.Add(DataHelper.CreateParameter("@pmtRegulaMn", SqlDbType.Decimal, value.MtRegulaMn));
             arrPrm.Add(DataHelper.CreateParameter("@pmtRegulaMe", SqlDbType.Decimal, value.MtRegulaMe));
             arrPrm.Add(DataHelper.CreateParameter("@pdsObserva", SqlDbType.VarChar,250, value.DsObserva));
             arrPrm.Add(DataHelper.CreateParameter("@pstAnulado", SqlDbType.Char, 1, value.StAnulado));
             return arrPrm;
        }
        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);
        }
        private ArrayList BuildParamInterface(EProcPlaReg 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("@pidConRemu", SqlDbType.Char, 3, value.IdConRemu));
             arrPrm.Add(DataHelper.CreateParameter("@pidTipRegula", SqlDbType.Char, 3, value.IdTipRegula));

              return arrPrm;
        }