Ejemplo n.º 1
0
        void ucGe_Menu_Mantenimiento_x_usuario_event_btnModificar_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            try
            {
                Info_OrdenGiro = (cp_orden_giro_Info)UltraGrid_OrdenGiro.GetFocusedRow();

                if (Info_OrdenGiro == null)
                {
                    MessageBox.Show("Seleccione una fila", "Sistemas", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                else
                {
                    if (Info_OrdenGiro.Estado == "I")
                    {
                        MessageBox.Show("La Factura #: " + Info_OrdenGiro.co_serie + "-" + Info_OrdenGiro.co_factura + "/" + Info_OrdenGiro.IdCbteCble_Ogiro + " está anulada, solo puede consultar.", "Sistemas", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        llamaFRM(Cl_Enumeradores.eTipo_action.consultar, Info_OrdenGiro);
                    }
                    else
                    {
                        cp_orden_pago_det_Bus         bus_opDet   = new cp_orden_pago_det_Bus();
                        List <cp_orden_pago_det_Info> lista_opDet = new List <cp_orden_pago_det_Info>();
                        string mensaje = "";
                        lista_opDet = bus_opDet.Get_List_OrdenPagoDetalle(Info_OrdenGiro.IdEmpresa, Info_OrdenGiro.IdCbteCble_Ogiro, Info_OrdenGiro.IdTipoCbte_Ogiro, ref mensaje);

                        if (lista_opDet.Count != 0)
                        {
                            MessageBox.Show("La Factura #: " + Info_OrdenGiro.co_serie + "-" + Info_OrdenGiro.co_factura + "/" + Info_OrdenGiro.IdCbteCble_Ogiro + " tiene asociadas Ordenes de Pago. No se puede modificar completamente", "Sistemas", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            llamaFRM(Cl_Enumeradores.eTipo_action.actualizar_proceso_cerrado, Info_OrdenGiro);
                            return;
                        }

                        cp_retencion_Bus  bus_Retencion = new cp_retencion_Bus();
                        cp_retencion_Info info          = new cp_retencion_Info();

                        info = bus_Retencion.Get_Info_retencion(Info_OrdenGiro.IdEmpresa, Info_OrdenGiro.IdCbteCble_Ogiro, Info_OrdenGiro.IdTipoCbte_Ogiro);

                        if (info != null)
                        {
                            llamaFRM(Cl_Enumeradores.eTipo_action.actualizar, Info_OrdenGiro);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log_Error_bus.Log_Error(ex.ToString());
                MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 2
0
        public bool GrabarDB()
        {
            try
            {
                Get_OrdenPago();
                Get_Comprobante_contable();
                Get_Historico_cancelacion();
                bool    bandera_sigrabo = false;
                decimal id_OP           = 0;
                decimal id_detalle_OP   = 0;
                string  mensajeError    = "";
                int     idliquidacion   = 0;
                decimal IdCbteCble      = 0;
                if (Bus_Orden_pago.GuardaDB(Info_Orden_Pago, ref id_OP, ref mensajeError))
                {
                    int sec = 0;
                    if (Bus_comprobante_contable.GrabarDB(Info_comprobante_Contable, ref IdCbteCble, ref mensajeError))
                    {
                        cp_orden_pago_det_Bus detalle = new cp_orden_pago_det_Bus();

                        foreach (var item in Info_Orden_Pago.Detalle)
                        {
                            item.IdOrdenPago    = id_OP;
                            item.IdEmpresa      = Info_comprobante_Contable.IdEmpresa;
                            item.IdEmpresa_cxp  = param.IdEmpresa;
                            item.IdCbteCble_cxp = IdCbteCble;
                            item.IdTipoCbte_cxp = Info_comprobante_Contable.IdTipoCbte;

                            if (detalle.ModificarDB(item, ref id_detalle_OP, ref mensajeError))
                            {
                                Info_historico_cancelacion.IdEmpresa    = param.IdEmpresa;
                                Info_historico_cancelacion.IdOrdenPago  = id_OP;
                                Info_historico_cancelacion.IdEmpresa_OP = Info_Orden_Pago.IdEmpresa;
                                if (Bus_liquidacion_vacaciones.GrabarBD(Info_historico_cancelacion))
                                {
                                    bandera_sigrabo = true;
                                    if (bandera_sigrabo)
                                    {
                                        foreach (var item_ in Info_historico_cancelacion.detalle)
                                        {
                                            sec = sec + 1;
                                            if
                                            (sec == 1)
                                            {
                                                bus_detalle.Eliminar(item_);
                                            }
                                            item_.Sec                    = sec;
                                            item_.IdEmpresa              = Info_historico_cancelacion.IdEmpresa;
                                            item_.IdEmpleado             = Convert.ToInt32(Info_historico_cancelacion.IdEmpleado);
                                            item_.IdSolicitud_Vacaciones = Info_historico_cancelacion.IdSolicitud_Vacaciones;
                                            item_.IdNominatipo           = Info_historico_cancelacion.IdNomina_Tipo;
                                            bandera_sigrabo              = bus_detalle.Guardar_DB(item_);
                                        }

                                        if (MessageBox.Show("¿Desea imprimir la novedad?", "REMPLAZO POR EMPLEADO " + param.Nombre_sistema, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                        {
                                            Imprimir(Info_historico_cancelacion.IdEmpresa, Info_historico_cancelacion.IdEmpleado, Info_historico_cancelacion.IdSolicitud_Vacaciones);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                return(bandera_sigrabo);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                Log_Error_bus.Log_Error(ex.ToString());
                return(false);
            }
        }
Ejemplo n.º 3
0
        public bool GrabarDB()
        {
            try
            {
                Get_OrdenPago();
                Get_Comprobante_contable();
                Get_Historico_cancelacion();
                bool    bandera_sigrabo = false;
                decimal id_OP           = 0;
                decimal id_detalle_OP   = 0;
                string  mensajeError    = "";
                int     IdSolicitud     = 0;

                decimal IdCbteCble = 0;
                if (Bus_Orden_pago.GuardaDB(Info_Orden_Pago, ref id_OP, ref mensajeError))
                {
                    int sec = 0;
                    if (Bus_comprobante_contable.GrabarDB(Info_comprobante_Contable, ref IdCbteCble, ref mensajeError))
                    {
                        cp_orden_pago_det_Bus detalle = new cp_orden_pago_det_Bus();

                        foreach (var item in Info_Orden_Pago.Detalle)
                        {
                            item.IdOrdenPago    = id_OP;
                            item.IdEmpresa      = Info_comprobante_Contable.IdEmpresa;
                            item.IdEmpresa_cxp  = param.IdEmpresa;
                            item.IdCbteCble_cxp = IdCbteCble;
                            item.IdTipoCbte_cxp = Info_comprobante_Contable.IdTipoCbte;

                            if (detalle.ModificarDB(item, ref id_detalle_OP, ref mensajeError))
                            {
                                Info_historico_cancelacion.IdEmpresa    = param.IdEmpresa;
                                Info_historico_cancelacion.IdOrdenPago  = id_OP;
                                Info_historico_cancelacion.IdEmpresa_OP = Info_Orden_Pago.IdEmpresa;
                                if (Bus_liquidacion_vacaciones.GrabarBD(Info_historico_cancelacion))
                                {
                                    bandera_sigrabo = true;
                                    if (bandera_sigrabo)
                                    {
                                        foreach (var item_ in Info_historico_cancelacion.detalle)
                                        {
                                            item_.IdSolicitud_Vacaciones = IdSolicitud;
                                            sec = sec + 1;
                                            if
                                            (sec == 1)
                                            {
                                                bus_detalle.Eliminar(item_);
                                            }
                                            item_.Sec        = sec;
                                            item_.IdEmpresa  = Info_historico_cancelacion.IdEmpresa;
                                            item_.IdEmpleado = Convert.ToInt32(Info_historico_cancelacion.IdEmpleado);

                                            item_.IdNominatipo = Info_historico_cancelacion.IdNomina_Tipo;
                                            bandera_sigrabo    = bus_detalle.Guardar_DB(item_);
                                        }

                                        foreach (var item_nov in lista_novedas)
                                        {
                                            if (item_nov.check == true)
                                            {
                                                ro_Historico_Liquidacion_Vacaciones_Det_DescNovedad_Info info_ = new ro_Historico_Liquidacion_Vacaciones_Det_DescNovedad_Info();
                                                info_.IdEmpresa              = item_nov.IdEmpresa;
                                                info_.IdNomina_tipo          = item_nov.IdNomina;
                                                info_.IdEmpleado             = item_nov.IdEmpleado;
                                                info_.IdNomina_Tipo_Liq      = item_nov.IdNominaLiqui;
                                                info_.IdSolicitud_Vacaciones = IdSolicitud;
                                                info_.IdNovedad              = item_nov.IdNovedad;
                                                info_.Secuencia              = item_nov.Secuencia;
                                                info_.IdRubro = item_nov.IdRubro;
                                                info_.Valor   = item_nov.Valor;
                                                bus_detalle_nov.Guardar_DB(info_);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                return(bandera_sigrabo);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                Log_Error_bus.Log_Error(ex.ToString());
                return(false);
            }
        }
Ejemplo n.º 4
0
        public bool Contabilizar_proceso(ba_Archivo_Transferencia_Info info_archivo, tb_banco_procesos_bancarios_x_empresa_Info info_procesos_x_empresa, string Origen)
        {
            try
            {
                bool res = false;
                if (info_archivo.Contabilizado != true)
                {
                    decimal IdCbteCble  = 0;
                    decimal Valor_total = 0;
                    string  Observacion = "";
                    int     cont        = 0;

                    info_Cbtecble_ban             = new ba_Cbte_Ban_Info();
                    info_cbte_ban_tipo_x_cbtecble = bus_cbte_ban_tipo_x_cbtecble.Get_info_Cbte_Ban_tipo_x_ct_CbteCble_tipo(info_archivo.IdEmpresa, "NDBA");
                    info_banco_cta = bus_banco_cta.Get_Info_Banco_Cuenta(info_archivo.IdEmpresa, info_archivo.IdBanco);

                    List <cp_orden_pago_cancelaciones_Info> list_op_cancelaciones    = new List <cp_orden_pago_cancelaciones_Info>();
                    List <ba_Archivo_Transferencia_Det>     list_archivo_detalle_act = new List <ba_Archivo_Transferencia_Det>();

                    switch (info_archivo.IdProceso_bancario)
                    {
                    case "PAGO_PROVEEDORES_BOL":
                        #region Pago a proveedores del bolivariano
                        var list_secuenciales = (from q in info_archivo.Lst_Archivo_Transferencia_Det
                                                 group q by new { q.Secuencial_reg_x_proceso }
                                                 into secuenciales
                                                 select new
                        {
                            secuencial = secuenciales.Key.Secuencial_reg_x_proceso == null ? 0 : Convert.ToDecimal(secuenciales.Key.Secuencial_reg_x_proceso)
                        });

                        foreach (var item in list_secuenciales.OrderBy(q => q.secuencial))
                        {
                            //OBTENGO LA LISTA DE OP PARA HACER DIARIOS POR PROVEEDOR
                            list_op_cancelaciones = new List <cp_orden_pago_cancelaciones_Info>();
                            List <decimal> list_op = new List <decimal>();


                            foreach (var det_archivo in info_archivo.Lst_Archivo_Transferencia_Det.Where(q => q.Secuencial_reg_x_proceso == item.secuencial).ToList())
                            {
                                list_op.Add(det_archivo.IdOrdenPago == null ? 0 : (decimal)det_archivo.IdOrdenPago);
                            }
                            List <cp_orden_pago_det_Info> list_op_det = new List <cp_orden_pago_det_Info>();
                            cp_orden_pago_det_Bus         bus_op_det  = new cp_orden_pago_det_Bus();

                            //OBTENGO LA LISTA DE LAS OP PARA MATAR CON LA NDBA
                            list_op_det = bus_op_det.Get_list_orden_pago_con_cta_acreedora(info_archivo.IdEmpresa, list_op);

                            #region Armo cabecera diario
                            info_Cbtecble_ban.info_Cbtecble      = new ct_Cbtecble_Info();
                            info_Cbtecble_ban.IdEmpresa          = info_Cbtecble_ban.info_Cbtecble.IdEmpresa = info_archivo.IdEmpresa;
                            info_Cbtecble_ban.IdTipocbte         = info_Cbtecble_ban.info_Cbtecble.IdTipoCbte = info_cbte_ban_tipo_x_cbtecble.IdTipoCbteCble;
                            info_Cbtecble_ban.IdCbteCble         = info_Cbtecble_ban.info_Cbtecble.IdCbteCble = 0;
                            info_Cbtecble_ban.IdPeriodo          = info_Cbtecble_ban.info_Cbtecble.IdPeriodo = (info_archivo.Fecha.Year * 100) + info_archivo.Fecha.Month;
                            info_Cbtecble_ban.cb_Fecha           = info_Cbtecble_ban.info_Cbtecble.cb_Fecha = info_archivo.Fecha;
                            info_Cbtecble_ban.cb_secuencia       = info_Cbtecble_ban.info_Cbtecble.Secuencia = 0;
                            info_Cbtecble_ban.info_Cbtecble.Anio = info_archivo.Fecha.Year;
                            info_Cbtecble_ban.info_Cbtecble.Mes  = info_archivo.Fecha.Month;
                            info_Cbtecble_ban.IdUsuario          = info_Cbtecble_ban.info_Cbtecble.IdUsuario = info_archivo.IdUsuario;
                            info_Cbtecble_ban.Fecha_Transac      = info_Cbtecble_ban.info_Cbtecble.cb_FechaTransac = DateTime.Now;

                            info_Cbtecble_ban.IdSucursal       = info_Cbtecble_ban.info_Cbtecble.IdSucursal = 1;
                            info_Cbtecble_ban.cb_ChequeImpreso = "N"; info_Cbtecble_ban.info_Cbtecble.Mayorizado = "N";
                            info_Cbtecble_ban.info_Cbtecble._cbteCble_det_lista_info = new List <ct_Cbtecble_det_Info>();
                            info_Cbtecble_ban.Estado = info_Cbtecble_ban.info_Cbtecble.Estado = "A";
                            #endregion

                            #region Armo detalle diario
                            Valor_total = 0;
                            Observacion = "OB# " + item.secuencial + " NDBA x " + info_archivo.IdProceso_bancario + " # " + info_archivo.IdArchivo.ToString();

                            cont = 0;
                            foreach (var det_op in list_op_det)
                            {
                                if (cont == 0)
                                {
                                    Observacion += " " + det_op.IdTipo_Persona + ": [" + det_op.IdEntidad.ToString() + "] " + det_op.pr_nombre.Trim();
                                    cont++;
                                }

                                //validacion si llega una op para adjuntar como referencia
                                if (det_op.Referencia == null)
                                {
                                    Observacion += ", OP#" + det_op.IdOrdenPago;
                                }
                                else
                                {
                                    Observacion += ", " + det_op.Referencia;
                                }

                                Valor_total += Convert.ToDecimal(Math.Round(det_op.Valor_a_pagar, 2, MidpointRounding.AwayFromZero));

                                ct_Cbtecble_det_Info Debe = new ct_Cbtecble_det_Info();
                                Debe.IdEmpresa      = info_Cbtecble_ban.info_Cbtecble.IdEmpresa;
                                Debe.IdTipoCbte     = info_Cbtecble_ban.info_Cbtecble.IdTipoCbte;
                                Debe.IdCbteCble     = 0;
                                Debe.secuencia      = 0;
                                Debe.IdCtaCble      = det_op.IdCtaCble_Acreedora;
                                Debe.dc_Valor       = Convert.ToDouble(Math.Round(Convert.ToDecimal(det_op.Valor_a_pagar), 2, MidpointRounding.AwayFromZero));
                                Debe.dc_Observacion = "OB# " + item.secuencial + " NDBA x " + info_archivo.IdProceso_bancario + " # " + info_archivo.IdArchivo.ToString() + " " + det_op.IdTipo_Persona + ": [" + det_op.IdEntidad.ToString() + "] " + det_op.pr_nombre.Trim() + " " + det_op.Referencia;
                                info_Cbtecble_ban.info_Cbtecble._cbteCble_det_lista_info.Add(Debe);

                                //Cabecera de cbte bancario necesita id proveedor
                                info_Cbtecble_ban.IdProveedor = det_op.IdEntidad;

                                #region Cancelaciones x op
                                cp_orden_pago_cancelaciones_Info info_op_cancelaciones = new cp_orden_pago_cancelaciones_Info();

                                info_op_cancelaciones.IdEmpresa        = info_archivo.IdEmpresa;
                                info_op_cancelaciones.Idcancelacion    = 0;
                                info_op_cancelaciones.Secuencia        = 0;
                                info_op_cancelaciones.IdEmpresa_op     = det_op.IdEmpresa;
                                info_op_cancelaciones.IdOrdenPago_op   = det_op.IdOrdenPago;
                                info_op_cancelaciones.Secuencia_op     = det_op.Secuencia;
                                info_op_cancelaciones.IdEmpresa_cxp    = det_op.IdEmpresa_cxp;
                                info_op_cancelaciones.IdTipoCbte_cxp   = det_op.IdTipoCbte_cxp;
                                info_op_cancelaciones.IdCbteCble_cxp   = det_op.IdCbteCble_cxp;
                                info_op_cancelaciones.MontoAplicado    = det_op.Valor_a_pagar;
                                info_op_cancelaciones.SaldoActual      = 0;
                                info_op_cancelaciones.SaldoAnterior    = 0;
                                info_op_cancelaciones.Observacion      = "Canc./ de OP con Archivo bancario x " + info_archivo.IdProceso_bancario + " #" + info_archivo.IdArchivo.ToString();
                                info_op_cancelaciones.fechaTransaccion = info_archivo.Fecha;

                                list_op_cancelaciones.Add(info_op_cancelaciones);
                                #endregion
                            }

                            ct_Cbtecble_det_Info Haber = new ct_Cbtecble_det_Info();
                            Haber.IdEmpresa         = info_Cbtecble_ban.info_Cbtecble.IdEmpresa;
                            Haber.IdTipoCbte        = info_Cbtecble_ban.info_Cbtecble.IdTipoCbte;
                            Haber.IdCbteCble        = 0;
                            Haber.secuencia         = 0;
                            Haber.IdCtaCble         = info_banco_cta.IdCtaCble;
                            Haber.dc_Valor          = Convert.ToDouble(Math.Round(Valor_total, 2, MidpointRounding.AwayFromZero)) * -1;
                            Haber.dc_Observacion    = Observacion;
                            Haber.dc_para_conciliar = true;
                            info_Cbtecble_ban.info_Cbtecble._cbteCble_det_lista_info.Add(Haber);
                            #endregion

                            info_Cbtecble_ban.cb_Valor       = info_Cbtecble_ban.info_Cbtecble.cb_Valor = Convert.ToDouble(Math.Round(Valor_total, 2, MidpointRounding.AwayFromZero));
                            info_Cbtecble_ban.cb_Observacion = info_Cbtecble_ban.info_Cbtecble.cb_Observacion = Observacion;
                            IdCbteCble = 0;

                            #region Grabar
                            if (bus_Cbtecble_conta.GrabarDB(info_Cbtecble_ban.info_Cbtecble, ref IdCbteCble, ref mensaje_error))
                            {
                                info_Cbtecble_ban.IdBanco    = info_archivo.IdBanco;
                                info_Cbtecble_ban.IdCbteCble = IdCbteCble;
                                info_Cbtecble_ban.IdTipoNota = info_procesos_x_empresa.IdTipoNota;

                                bus_Cbtecble_ban.GrabarDB(info_Cbtecble_ban, ref mensaje_error);

                                var list_agrup = (from q in list_op_cancelaciones
                                                  group q by new
                                {
                                    q.IdEmpresa,
                                    q.Idcancelacion,
                                    q.Secuencia,
                                    q.IdEmpresa_op,
                                    q.IdOrdenPago_op,
                                    q.Secuencia_op,
                                    q.IdEmpresa_cxp,
                                    q.IdTipoCbte_cxp,
                                    q.IdCbteCble_cxp,
                                    q.MontoAplicado,
                                    q.SaldoActual,
                                    q.SaldoAnterior,
                                    q.Observacion,
                                    q.fechaTransaccion
                                }
                                                  into Lista_agrupada
                                                  select new
                                {
                                    Lista_agrupada.Key.IdEmpresa,
                                    Lista_agrupada.Key.Idcancelacion,
                                    Lista_agrupada.Key.Secuencia,
                                    Lista_agrupada.Key.IdEmpresa_op,
                                    Lista_agrupada.Key.IdOrdenPago_op,
                                    Lista_agrupada.Key.Secuencia_op,
                                    Lista_agrupada.Key.IdEmpresa_cxp,
                                    Lista_agrupada.Key.IdTipoCbte_cxp,
                                    Lista_agrupada.Key.IdCbteCble_cxp,
                                    Lista_agrupada.Key.MontoAplicado,
                                    Lista_agrupada.Key.SaldoActual,
                                    Lista_agrupada.Key.SaldoAnterior,
                                    Lista_agrupada.Key.Observacion,
                                    Lista_agrupada.Key.fechaTransaccion
                                });
                                list_op_cancelaciones = new List <cp_orden_pago_cancelaciones_Info>();
                                foreach (var cancelacion in list_agrup)
                                {
                                    cp_orden_pago_cancelaciones_Info info_can = new cp_orden_pago_cancelaciones_Info();
                                    info_can.IdEmpresa        = cancelacion.IdEmpresa;
                                    info_can.Idcancelacion    = cancelacion.Idcancelacion;
                                    info_can.Secuencia        = cancelacion.Secuencia;
                                    info_can.IdEmpresa_op     = cancelacion.IdEmpresa_op;
                                    info_can.IdOrdenPago_op   = cancelacion.IdOrdenPago_op;
                                    info_can.Secuencia_op     = cancelacion.Secuencia_op;
                                    info_can.IdEmpresa_cxp    = cancelacion.IdEmpresa_cxp;
                                    info_can.IdTipoCbte_cxp   = cancelacion.IdTipoCbte_cxp;
                                    info_can.IdCbteCble_cxp   = cancelacion.IdCbteCble_cxp;
                                    info_can.MontoAplicado    = cancelacion.MontoAplicado;
                                    info_can.SaldoActual      = cancelacion.SaldoActual;
                                    info_can.SaldoAnterior    = cancelacion.SaldoAnterior;
                                    info_can.Observacion      = cancelacion.Observacion;
                                    info_can.fechaTransaccion = cancelacion.fechaTransaccion;
                                    info_can.IdEmpresa_pago   = info_Cbtecble_ban.info_Cbtecble.IdEmpresa;
                                    info_can.IdTipoCbte_pago  = info_Cbtecble_ban.info_Cbtecble.IdTipoCbte;
                                    info_can.IdCbteCble_pago  = IdCbteCble;
                                    list_op_cancelaciones.Add(info_can);
                                }
                                bus_op_cancelaciones.GuardarDB(list_op_cancelaciones, info_archivo.IdEmpresa, ref mensaje_error);
                            }

                            #endregion
                        }
                        res = true;
                        info_archivo.Contabilizado = true;
                        #endregion
                        break;

                    default:
                        if (info_archivo.Origen_Archivo != "RRHH")
                        {
                            #region Pago a proveedores que tengan op

                            //OBTENGO LA LISTA DE OP PARA HACER DIARIOS POR PROVEEDOR

                            List <decimal> list_op_x_canc = new List <decimal>();
                            foreach (var det_archivo in info_archivo.Lst_Archivo_Transferencia_Det)
                            {
                                list_op_x_canc.Add(det_archivo.IdOrdenPago == null ? 0 : (decimal)det_archivo.IdOrdenPago);
                            }
                            List <cp_orden_pago_det_Info> list_op_det_x_cancelar = new List <cp_orden_pago_det_Info>();
                            cp_orden_pago_det_Bus         bus_op_det_x_cancelar  = new cp_orden_pago_det_Bus();
                            //OBTENGO LA LISTA DE LAS OP PARA MATAR CON LA NDBA
                            list_op_det_x_cancelar = bus_op_det_x_cancelar.Get_list_orden_pago_con_cta_acreedora(info_archivo.IdEmpresa, list_op_x_canc);

                            foreach (var det_op in list_op_det_x_cancelar)
                            {
                                list_op_cancelaciones = new List <cp_orden_pago_cancelaciones_Info>();
                                #region Armo cabecera diario
                                info_Cbtecble_ban.info_Cbtecble      = new ct_Cbtecble_Info();
                                info_Cbtecble_ban.IdEmpresa          = info_Cbtecble_ban.info_Cbtecble.IdEmpresa = info_archivo.IdEmpresa;
                                info_Cbtecble_ban.IdTipocbte         = info_Cbtecble_ban.info_Cbtecble.IdTipoCbte = info_cbte_ban_tipo_x_cbtecble.IdTipoCbteCble;
                                info_Cbtecble_ban.IdCbteCble         = info_Cbtecble_ban.info_Cbtecble.IdCbteCble = 0;
                                info_Cbtecble_ban.IdPeriodo          = info_Cbtecble_ban.info_Cbtecble.IdPeriodo = (info_archivo.Fecha.Year * 100) + info_archivo.Fecha.Month;
                                info_Cbtecble_ban.cb_Fecha           = info_Cbtecble_ban.info_Cbtecble.cb_Fecha = info_archivo.Fecha;
                                info_Cbtecble_ban.cb_secuencia       = info_Cbtecble_ban.info_Cbtecble.Secuencia = 0;
                                info_Cbtecble_ban.info_Cbtecble.Anio = info_archivo.Fecha.Year;
                                info_Cbtecble_ban.info_Cbtecble.Mes  = info_archivo.Fecha.Month;
                                info_Cbtecble_ban.IdUsuario          = info_Cbtecble_ban.info_Cbtecble.IdUsuario = info_archivo.IdUsuario;
                                info_Cbtecble_ban.Fecha_Transac      = info_Cbtecble_ban.info_Cbtecble.cb_FechaTransac = DateTime.Now;

                                info_Cbtecble_ban.IdSucursal       = info_Cbtecble_ban.info_Cbtecble.IdSucursal = 1;
                                info_Cbtecble_ban.cb_ChequeImpreso = "N"; info_Cbtecble_ban.info_Cbtecble.Mayorizado = "N";
                                info_Cbtecble_ban.info_Cbtecble._cbteCble_det_lista_info = new List <ct_Cbtecble_det_Info>();
                                info_Cbtecble_ban.Estado = info_Cbtecble_ban.info_Cbtecble.Estado = "A";
                                #endregion

                                #region Armo detalle diario
                                Valor_total = 0;
                                Observacion = info_archivo.IdProceso_bancario + " # " + info_archivo.IdArchivo.ToString();

                                cont = 0;

                                if (cont == 0)
                                {
                                    Observacion += " " + det_op.IdTipo_Persona + ": [" + det_op.IdEntidad.ToString() + "] " + det_op.pr_nombre.Trim();
                                    cont++;
                                }
                                Observacion += ", " + det_op.Referencia;
                                Valor_total += Convert.ToDecimal(Math.Round(det_op.Valor_a_pagar, 2, MidpointRounding.AwayFromZero));

                                ct_Cbtecble_det_Info Debe = new ct_Cbtecble_det_Info();
                                Debe.IdEmpresa      = info_Cbtecble_ban.info_Cbtecble.IdEmpresa;
                                Debe.IdTipoCbte     = info_Cbtecble_ban.info_Cbtecble.IdTipoCbte;
                                Debe.IdCbteCble     = 0;
                                Debe.secuencia      = 0;
                                Debe.IdCtaCble      = det_op.IdCtaCble_Acreedora;
                                Debe.dc_Valor       = Convert.ToDouble(Math.Round(Convert.ToDecimal(det_op.Valor_a_pagar), 2, MidpointRounding.AwayFromZero));
                                Debe.dc_Observacion = info_archivo.IdProceso_bancario + " # " + info_archivo.IdArchivo.ToString() + " " + det_op.IdTipo_Persona + ": [" + det_op.IdEntidad.ToString() + "] " + det_op.pr_nombre.Trim() + " " + det_op.Referencia;
                                info_Cbtecble_ban.info_Cbtecble._cbteCble_det_lista_info.Add(Debe);

                                //Cabecera de cbte bancario necesita id proveedor
                                info_Cbtecble_ban.IdProveedor = det_op.IdEntidad;

                                #region Cancelaciones x op
                                cp_orden_pago_cancelaciones_Info info_op_cancelaciones = new cp_orden_pago_cancelaciones_Info();

                                info_op_cancelaciones.IdEmpresa        = info_archivo.IdEmpresa;
                                info_op_cancelaciones.Idcancelacion    = 0;
                                info_op_cancelaciones.Secuencia        = 0;
                                info_op_cancelaciones.IdEmpresa_op     = det_op.IdEmpresa;
                                info_op_cancelaciones.IdOrdenPago_op   = det_op.IdOrdenPago;
                                info_op_cancelaciones.Secuencia_op     = det_op.Secuencia;
                                info_op_cancelaciones.IdEmpresa_cxp    = det_op.IdEmpresa_cxp;
                                info_op_cancelaciones.IdTipoCbte_cxp   = det_op.IdTipoCbte_cxp;
                                info_op_cancelaciones.IdCbteCble_cxp   = det_op.IdCbteCble_cxp;
                                info_op_cancelaciones.MontoAplicado    = det_op.Valor_a_pagar;
                                info_op_cancelaciones.SaldoActual      = 0;
                                info_op_cancelaciones.SaldoAnterior    = 0;
                                info_op_cancelaciones.Observacion      = "Canc./ de OP con Archivo bancario x " + info_archivo.IdProceso_bancario + " #" + info_archivo.IdArchivo.ToString();
                                info_op_cancelaciones.fechaTransaccion = info_archivo.Fecha;

                                list_op_cancelaciones.Add(info_op_cancelaciones);
                                #endregion


                                ct_Cbtecble_det_Info Haber_op = new ct_Cbtecble_det_Info();
                                Haber_op.IdEmpresa         = info_Cbtecble_ban.info_Cbtecble.IdEmpresa;
                                Haber_op.IdTipoCbte        = info_Cbtecble_ban.info_Cbtecble.IdTipoCbte;
                                Haber_op.IdCbteCble        = 0;
                                Haber_op.secuencia         = 0;
                                Haber_op.IdCtaCble         = info_banco_cta.IdCtaCble;
                                Haber_op.dc_Valor          = Convert.ToDouble(Math.Round(Valor_total, 2, MidpointRounding.AwayFromZero)) * -1;
                                Haber_op.dc_Observacion    = Observacion;
                                Haber_op.dc_para_conciliar = true;
                                info_Cbtecble_ban.info_Cbtecble._cbteCble_det_lista_info.Add(Haber_op);
                                #endregion

                                info_Cbtecble_ban.cb_Valor       = info_Cbtecble_ban.info_Cbtecble.cb_Valor = Convert.ToDouble(Math.Round(Valor_total, 2, MidpointRounding.AwayFromZero));
                                info_Cbtecble_ban.cb_Observacion = info_Cbtecble_ban.info_Cbtecble.cb_Observacion = Observacion;
                                IdCbteCble = 0;

                                #region Grabar
                                if (bus_Cbtecble_conta.GrabarDB(info_Cbtecble_ban.info_Cbtecble, ref IdCbteCble, ref mensaje_error))
                                {
                                    info_Cbtecble_ban.IdBanco    = info_archivo.IdBanco;
                                    info_Cbtecble_ban.IdCbteCble = IdCbteCble;
                                    info_Cbtecble_ban.IdTipoNota = info_procesos_x_empresa.IdTipoNota;

                                    bus_Cbtecble_ban.GrabarDB(info_Cbtecble_ban, ref mensaje_error);

                                    ba_Archivo_Transferencia_Det_Info info_archivo_det = new ba_Archivo_Transferencia_Det_Info();

                                    info_archivo_det = info_archivo.Lst_Archivo_Transferencia_Det.FirstOrDefault(q => q.IdEmpresa_OP == det_op.IdEmpresa && q.IdOrdenPago == det_op.IdOrdenPago && q.Secuencia_OP == det_op.Secuencia);
                                    if (info_archivo_det != null)
                                    {
                                        info_archivo_det.IdEmpresa_pago  = info_Cbtecble_ban.IdEmpresa;
                                        info_archivo_det.IdTipoCbte_pago = info_Cbtecble_ban.IdTipocbte;
                                        info_archivo_det.IdCbteCble_pago = info_Cbtecble_ban.IdCbteCble;
                                        bus_archivo_det.ModificarDB(info_archivo_det);
                                    }

                                    var list_agrup = (from q in list_op_cancelaciones
                                                      group q by new
                                    {
                                        q.IdEmpresa,
                                        q.Idcancelacion,
                                        q.Secuencia,
                                        q.IdEmpresa_op,
                                        q.IdOrdenPago_op,
                                        q.Secuencia_op,
                                        q.IdEmpresa_cxp,
                                        q.IdTipoCbte_cxp,
                                        q.IdCbteCble_cxp,
                                        q.MontoAplicado,
                                        q.SaldoActual,
                                        q.SaldoAnterior,
                                        q.Observacion,
                                        q.fechaTransaccion
                                    }
                                                      into Lista_agrupada
                                                      select new
                                    {
                                        Lista_agrupada.Key.IdEmpresa,
                                        Lista_agrupada.Key.Idcancelacion,
                                        Lista_agrupada.Key.Secuencia,
                                        Lista_agrupada.Key.IdEmpresa_op,
                                        Lista_agrupada.Key.IdOrdenPago_op,
                                        Lista_agrupada.Key.Secuencia_op,
                                        Lista_agrupada.Key.IdEmpresa_cxp,
                                        Lista_agrupada.Key.IdTipoCbte_cxp,
                                        Lista_agrupada.Key.IdCbteCble_cxp,
                                        Lista_agrupada.Key.MontoAplicado,
                                        Lista_agrupada.Key.SaldoActual,
                                        Lista_agrupada.Key.SaldoAnterior,
                                        Lista_agrupada.Key.Observacion,
                                        Lista_agrupada.Key.fechaTransaccion
                                    });
                                    list_op_cancelaciones = new List <cp_orden_pago_cancelaciones_Info>();
                                    foreach (var cancelacion in list_agrup)
                                    {
                                        cp_orden_pago_cancelaciones_Info info_can = new cp_orden_pago_cancelaciones_Info();
                                        info_can.IdEmpresa        = cancelacion.IdEmpresa;
                                        info_can.Idcancelacion    = cancelacion.Idcancelacion;
                                        info_can.Secuencia        = cancelacion.Secuencia;
                                        info_can.IdEmpresa_op     = cancelacion.IdEmpresa_op;
                                        info_can.IdOrdenPago_op   = cancelacion.IdOrdenPago_op;
                                        info_can.Secuencia_op     = cancelacion.Secuencia_op;
                                        info_can.IdEmpresa_cxp    = cancelacion.IdEmpresa_cxp;
                                        info_can.IdTipoCbte_cxp   = cancelacion.IdTipoCbte_cxp;
                                        info_can.IdCbteCble_cxp   = cancelacion.IdCbteCble_cxp;
                                        info_can.MontoAplicado    = cancelacion.MontoAplicado;
                                        info_can.SaldoActual      = cancelacion.SaldoActual;
                                        info_can.SaldoAnterior    = cancelacion.SaldoAnterior;
                                        info_can.Observacion      = cancelacion.Observacion;
                                        info_can.fechaTransaccion = cancelacion.fechaTransaccion;
                                        info_can.IdEmpresa_pago   = info_Cbtecble_ban.info_Cbtecble.IdEmpresa;
                                        info_can.IdTipoCbte_pago  = info_Cbtecble_ban.info_Cbtecble.IdTipoCbte;
                                        info_can.IdCbteCble_pago  = IdCbteCble;
                                        list_op_cancelaciones.Add(info_can);
                                    }
                                    bus_op_cancelaciones.GuardarDB(list_op_cancelaciones, info_archivo.IdEmpresa, ref mensaje_error);
                                }
                            }

                            #endregion

                            res = true;
                            info_archivo.Contabilizado = true;
                            #endregion
                        }

                        break;
                    }
                    Actualizar_estado_contabilizacion(info_archivo);
                }

                return(res);
            }
            catch (Exception ex)
            {
                Core.Erp.Info.Log_Exception.LoggingManager.Logger.Log(Core.Erp.Info.Log_Exception.LoggingCategory.Error, ex.Message);
                throw new Core.Erp.Info.Log_Exception.DalException(string.Format("", "Get_List_Archivo_transferencia", ex.Message), ex)
                      {
                          EntityType = typeof(ba_Archivo_Transferencia_Bus)
                      };
            }
        }