protected override void PrintAction()
        {
            try
            {
                PgMng.Reset(6, 1, Face.Resources.Messages.RETRIEVING_DATA, this);

                if (FFacturaIni_DTP.Checked)
                {
                    _report_filter.fecha_fac_inicio = FFacturaIni_DTP.Value;
                }
                else
                {
                    _report_filter.fecha_fac_inicio = DateTime.MinValue;
                }

                if (FFacturaFin_DTP.Checked)
                {
                    _report_filter.fecha_fac_final = FFacturaFin_DTP.Value;
                }
                else
                {
                    _report_filter.fecha_fac_final = DateTime.MaxValue;
                }

                if (FPagoIni_DTP.Checked)
                {
                    _report_filter.fecha_pago_inicio = FPagoIni_DTP.Value;
                }
                else
                {
                    _report_filter.fecha_pago_inicio = DateTime.MinValue;
                }

                if (FPagoFin_DTP.Checked)
                {
                    _report_filter.fecha_pago_final = FPagoFin_DTP.Value;
                }
                else
                {
                    _report_filter.fecha_pago_final = DateTime.MaxValue;
                }

                if (FPrevisionIni_DTP.Checked)
                {
                    _report_filter.prevision_ini = FPrevisionIni_DTP.Value;
                }
                else
                {
                    _report_filter.prevision_ini = DateTime.MinValue;
                }

                if (FPrevisionFin_DTP.Checked)
                {
                    _report_filter.prevision_fin = FPrevisionFin_DTP.Value;
                }
                else
                {
                    _report_filter.prevision_fin = DateTime.MaxValue;
                }

                _report_filter.exp_final       = string.Empty;
                _report_filter.exp_inicial     = string.Empty;
                _report_filter.tipo            = (EPagos)(long)TipoFactura_CB.SelectedValue;
                _report_filter.tipo_informe    = (ETipoInforme)(long)TipoAcreedor_CB.SelectedValue;
                _report_filter.tipo_expediente = (moleQule.Store.Structs.ETipoExpediente)(long) TipoExpediente_CB.SelectedValue;

                ReportFormat format = new ReportFormat();
                format.Vista = (Resumido_RB.Checked) ? EReportVista.Resumido : EReportVista.Detallado;

                string filtro = GetFilterValues();
                PgMng.Grow();

                ExpedienteList expedients = ExpedienteList.GetList(_report_filter.tipo_expediente, false);
                PgMng.Grow();

                InputInvoiceList invoices = InputInvoiceList.GetListByDate(_report_filter.fecha_fac_inicio, _report_filter.fecha_fac_final, false);
                PgMng.Grow();

                PaymentSummaryList summaries = PaymentSummaryList.GetPendientesList();
                PgMng.Grow(Face.Resources.Messages.BUILDING_REPORT);

                PaymentReportMng  reportMng = new PaymentReportMng(AppContext.ActiveSchema, this.Text, filtro);
                PaymentsReportRpt rpt       = reportMng.GetInformeControlPagosReport(invoices, expedients, summaries, _report_filter, format);
                PgMng.FillUp();

                ShowReport(rpt);

                _action_result = DialogResult.Ignore;
            }
            catch (Exception ex)
            {
                PgMng.FillUp();
                throw ex;
            }
        }
        public PaymentsReportRpt GetInformeControlPagosReport(InputInvoiceList facturas,
                                                              ExpedienteList expedientes,
                                                              PaymentSummaryList resumen,
                                                              ReportFilter filter,
                                                              ReportFormat format)
        {
            List <ExpedientInfo> explist = new List <ExpedientInfo>();

            foreach (ExpedientInfo exp in expedientes)
            {
                if ((filter.exp_inicial.Length == 0 || exp.Codigo.CompareTo(filter.exp_inicial) >= 0) &&
                    (filter.exp_final.Length == 0 || exp.Codigo.CompareTo(filter.exp_final) <= 0))
                {
                    explist.Add(exp);
                }
            }

            List <ControlPagosPrint> lista = new List <ControlPagosPrint>();
            ExpedientInfo            obj   = null;
            DateTime fecha_pago            = DateTime.MinValue;

            string oidS = string.Empty;
            long   oid  = 0;

            foreach (InputInvoiceInfo item in facturas)
            {
                if (!CompFechas(filter, item.Prevision, item.FechaPagoFactura))
                {
                    continue;
                }
                if ((filter.tipo == EPagos.Pagados) && !item.Pagada)
                {
                    continue;
                }
                if ((filter.tipo == EPagos.Pendientes) && item.Pagada)
                {
                    continue;
                }

                switch (filter.tipo_informe)
                {
                case ETipoInforme.Despachante:

                    if (item.ETipoAcreedor != ETipoAcreedor.Despachante)
                    {
                        continue;
                    }

                    if (filter.objeto_detallado != null)
                    {
                        if (!item.OidAcreedor.Equals(((DespachanteInfo)filter.objeto_detallado).Oid))
                        {
                            continue;
                        }
                    }

                    obj  = expedientes.GetItem(item.OidExpediente);
                    oidS = ((long)(item.TipoAcreedor + 1)).ToString("00") + "00000" + item.OidAcreedor.ToString();
                    oid  = Convert.ToInt64(oidS);
                    lista.Add(item.GetControlPagosPrintObject(obj, resumen.GetItem(oid)));

                    break;

                case ETipoInforme.Naviera:

                    if (item.ETipoAcreedor != ETipoAcreedor.Naviera)
                    {
                        continue;
                    }

                    if (filter.objeto_detallado != null)
                    {
                        if (!item.OidAcreedor.Equals(((NavieraInfo)filter.objeto_detallado).Oid))
                        {
                            continue;
                        }
                    }

                    oidS = ((long)(item.TipoAcreedor + 1)).ToString("00") + "00000" + item.OidAcreedor.ToString();
                    oid  = Convert.ToInt64(oidS);

                    obj = expedientes.GetItem(item.OidExpediente);
                    lista.Add(item.GetControlPagosPrintObject(obj, resumen.GetItem(oid)));

                    break;

                case ETipoInforme.Proveedor:

                    if (item.ETipoAcreedor != ETipoAcreedor.Proveedor)
                    {
                        continue;
                    }

                    obj = expedientes.GetItem(item.OidExpediente);

                    if (filter.objeto_detallado != null)
                    {
                        if (!item.OidAcreedor.Equals(((ProveedorInfo)filter.objeto_detallado).Oid))
                        {
                            continue;
                        }
                    }

                    oidS = ((long)(item.TipoAcreedor + 1)).ToString("00") + "00000" + item.OidAcreedor.ToString();
                    oid  = Convert.ToInt64(oidS);

                    obj = expedientes.GetItem(item.OidExpediente);
                    lista.Add(item.GetControlPagosPrintObject(obj, resumen.GetItem(oid)));

                    break;

                case ETipoInforme.TransportistaDestino:

                    if (item.ETipoAcreedor != ETipoAcreedor.TransportistaDestino)
                    {
                        continue;
                    }

                    if (filter.objeto_detallado != null)
                    {
                        if (item.OidAcreedor.Equals(((Transporter)filter.objeto_detallado).Oid))
                        {
                            continue;
                        }
                    }

                    oidS = ((long)(item.TipoAcreedor + 1)).ToString("00") + "00000" + item.OidAcreedor.ToString();
                    oid  = Convert.ToInt64(oidS);

                    obj = expedientes.GetItem(item.OidExpediente);
                    lista.Add(item.GetControlPagosPrintObject(obj, resumen.GetItem(oid)));

                    break;

                case ETipoInforme.TransportistaOrigen:

                    if (item.ETipoAcreedor != ETipoAcreedor.TransportistaOrigen)
                    {
                        continue;
                    }

                    if (filter.objeto_detallado != null)
                    {
                        if (item.OidAcreedor.Equals(((TransporterInfo)filter.objeto_detallado).Oid))
                        {
                            continue;
                        }
                    }

                    oidS = ((long)(item.TipoAcreedor + 1)).ToString("00") + "00000" + item.OidAcreedor.ToString();
                    oid  = Convert.ToInt64(oidS);

                    obj = expedientes.GetItem(item.OidExpediente);
                    lista.Add(item.GetControlPagosPrintObject(obj, resumen.GetItem(oid)));

                    break;

                case ETipoInforme.Todos:

                    oidS = ((long)(item.TipoAcreedor + 1)).ToString("00") + "00000" + item.OidAcreedor.ToString();
                    oid  = Convert.ToInt64(oidS);

                    obj = expedientes.GetItem(item.OidExpediente);
                    lista.Add(item.GetControlPagosPrintObject(obj, resumen.GetItem(oid)));

                    break;
                }
            }

            PaymentsReportRpt doc = new PaymentsReportRpt();

            if (format.Vista == EReportVista.Resumido)
            {
                doc.TitulosDetalle.SectionFormat.EnableSuppress = true;
                doc.Detalle.SectionFormat.EnableSuppress        = true;
                doc.GHElemento.SectionFormat.EnableSuppress     = true;
                doc.ReportDefinition.ReportObjects["SubtotalesAcreedorLB"].ObjectFormat.EnableSuppress = true;
            }
            else
            {
                doc.TitulosResumido.SectionFormat.EnableSuppress = true;
                doc.ReportDefinition.ReportObjects["NombreAcreedor"].ObjectFormat.EnableSuppress = true;
            }

            doc.SetDataSource(lista);

            FormatHeader(doc);

            return(doc);
        }