public List<VISTA_REPORTE_FACTURA> GetAllWithReferences() { Init(); try { using (LQCEEntities context = new LQCEEntities()) { RepositorioVISTA_REPORTE_FACTURA repositorio = new RepositorioVISTA_REPORTE_FACTURA(context); return repositorio.GetAllWithReferences().OrderBy(i => i.ID).ToList(); } } catch (Exception ex) { ISException.RegisterExcepcion(ex); Error = ex.Message; throw ex; } }
public List<VISTA_REPORTE_FACTURA> GetByFilter(int? ID_FACTURACION = null, int? ID_TIPO_FACTURA = null, System.DateTime? FECHA_FACTURACION = null, string RUT_LABORATORIO = "", int? NETO = null, int? IVA = null, int? TOTAL = null, bool? PAGADA = null, string NOMBRE_CLIENTE = "", string RUT_CLIENTE = "", string DIRECCION = "", string NOMBRE_COMUNA = "", int? NUMERO_FACTURA = null, int? DESCUENTO = null, string FONO = "", string GIRO = "", string DETALLE = "", int? VALOR_PAGADO = null, int? PAGOS_REGISTRADOS = null, int? SALDO_DEUDOR = null) { Init(); try { using (LQCEEntities context = new LQCEEntities()) { RepositorioVISTA_REPORTE_FACTURA repositorio = new RepositorioVISTA_REPORTE_FACTURA(context); return repositorio.GetByFilter(ID_FACTURACION, ID_TIPO_FACTURA, FECHA_FACTURACION, RUT_LABORATORIO, NETO, IVA, TOTAL, PAGADA, NOMBRE_CLIENTE, RUT_CLIENTE, DIRECCION, NOMBRE_COMUNA, NUMERO_FACTURA, DESCUENTO, FONO, GIRO, DETALLE, VALOR_PAGADO, PAGOS_REGISTRADOS, SALDO_DEUDOR).OrderBy(i => i.ID).ToList(); } } catch (Exception ex) { ISException.RegisterExcepcion(ex); Error = ex.Message; throw ex; } }
public VISTA_REPORTE_FACTURA GetByIdWithReferences(int ID) { Init(); try { using (LQCEEntities context = new LQCEEntities()) { RepositorioVISTA_REPORTE_FACTURA repositorio = new RepositorioVISTA_REPORTE_FACTURA(context); return repositorio.GetByIdWithReferences(ID); } } catch (Exception ex) { ISException.RegisterExcepcion(ex); Error = ex.Message; throw ex; } }
public int GetResumenFacturasByFilterCount(int? ID_FACTURACION, int? ID_TIPO_FACTURA, string RUT_CLIENTE, string NOMBRE_CLIENTE, DateTime? FECHA_EMISION, int? NUMERO_FACTURA, bool? PAGADA) { try { using (LQCEEntities context = new LQCEEntities()) { RepositorioVISTA_REPORTE_FACTURA _RepositorioVISTA_REPORTE_FACTURA = new RepositorioVISTA_REPORTE_FACTURA(context); return (from f in _RepositorioVISTA_REPORTE_FACTURA.GetByFilter(ID_FACTURACION, ID_TIPO_FACTURA, FECHA_EMISION, "", null, null, null, PAGADA, NOMBRE_CLIENTE, RUT_CLIENTE, "", "", NUMERO_FACTURA, null, "", "", "", null, null, null) select f).Count(); } } catch (Exception ex) { ISException.RegisterExcepcion(ex); Error = ex.Message; throw ex; } }
public List<DTO_RESUMEN_FACTURA> GetResumenFacturasByFilter(int? ID_FACTURACION, int? ID_TIPO_FACTURA, string RUT_CLIENTE, string NOMBRE_CLIENTE, DateTime? FECHA_EMISION, int? NUMERO_FACTURA, bool? PAGADA, int PageIndex, int PageSize) { try { using (LQCEEntities context = new LQCEEntities()) { RepositorioVISTA_REPORTE_FACTURA _RepositorioVISTA_REPORTE_FACTURA = new RepositorioVISTA_REPORTE_FACTURA(context); return (from f in _RepositorioVISTA_REPORTE_FACTURA.GetByFilter(ID_FACTURACION, ID_TIPO_FACTURA, FECHA_EMISION, "", null, null, null, PAGADA, NOMBRE_CLIENTE, RUT_CLIENTE, "", "", NUMERO_FACTURA, null, "", "", "", null, null, null) .OrderBy(f => f.FECHA_FACTURACION).ThenBy(f => f.NUMERO_FACTURA) .Skip((PageIndex - 1) * PageSize).Take(PageSize) select new DTO_RESUMEN_FACTURA { ID_FACTURA = f.ID, NUMERO_FACTURA = f.NUMERO_FACTURA, RUT_CLIENTE = f.RUT_CLIENTE, NOMBRE_CLIENTE = f.NOMBRE_CLIENTE, FECHA_EMISION = f.FECHA_FACTURACION, VALOR_TOTAL = f.TOTAL, VALOR_PAGADO = f.VALOR_PAGADO ?? 0, PAGOS_REGISTRADOS = f.PAGOS_REGISTRADOS ?? 0, SALDO_DEUDOR = f.SALDO_DEUDOR ?? 0, PAGADA = f.PAGADA }).ToList(); } } catch (Exception ex) { ISException.RegisterExcepcion(ex); Error = ex.Message; throw ex; } }
public DTO_DETALLE_FACTURA GetDetalleFacturaById(int ID_FACTURA) { try { using (LQCEEntities context = new LQCEEntities()) { RepositorioVISTA_REPORTE_FACTURA _RepositorioVISTA_REPORTE_FACTURA = new RepositorioVISTA_REPORTE_FACTURA(context); RepositorioFACTURACION _RepositorioFACTURACION = new RepositorioFACTURACION(context); var f = _RepositorioVISTA_REPORTE_FACTURA.GetById(ID_FACTURA); if (f == null) throw new Exception("No se encuentra información de la factura"); var pagos = _RepositorioFACTURACION.GetPagosByIdFacturaWithReferencesFull(ID_FACTURA); var detalle_factura = _RepositorioFACTURACION.GetFacturaDetalleByIdFactura(ID_FACTURA); var notas_cobro = _RepositorioFACTURACION.GetNotasCobrosByIdFacturaWithReferencesFull(ID_FACTURA); DTO_DETALLE_FACTURA _DTO_FACTURA = new DTO_DETALLE_FACTURA(); _DTO_FACTURA.ID_FACTURA = f.ID; _DTO_FACTURA.NUMERO_FACTURA = f.NUMERO_FACTURA; _DTO_FACTURA.RUT_CLIENTE = f.RUT_CLIENTE; _DTO_FACTURA.NOMBRE_CLIENTE = f.NOMBRE_CLIENTE; _DTO_FACTURA.FECHA_EMISION = f.FECHA_FACTURACION; _DTO_FACTURA.VALOR_TOTAL = f.TOTAL; _DTO_FACTURA.VALOR_PAGADO = f.VALOR_PAGADO ?? 0; _DTO_FACTURA.PAGOS_REGISTRADOS = f.PAGOS_REGISTRADOS ?? 0; _DTO_FACTURA.SALDO_DEUDOR = f.SALDO_DEUDOR ?? 0; _DTO_FACTURA.PAGADA = f.PAGADA; _DTO_FACTURA.LISTA_PRESTACIONES = (from df in detalle_factura where df.ACTIVO && df.PRESTACION.ACTIVO select new DTO_DETALLE_FACTURA_PRESTACION { ID_CLIENTE = df.FACTURA.CLIENTE.ID, ID_FACTURA_DETALLE = df.ID, NUMERO_FICHA = df.PRESTACION.ID, MONTO_TOTAL = df.MONTO_TOTAL, MONTO_COBRADO = df.MONTO_COBRADO, FECHA_RECEPCION = df.PRESTACION.FECHA_RECEPCION, NOMBRE_PACIENTE = df.PRESTACION.PRESTACION_HUMANA != null ? df.PRESTACION.PRESTACION_HUMANA.NOMBRE : df.PRESTACION.PRESTACION_VETERINARIA.NOMBRE }).ToList(); _DTO_FACTURA.LISTA_COBROS = (from c in notas_cobro select new DTO_DETALLE_FACTURA_COBRO { ID_NOTA_COBRO = c.ID, FECHA_COBRO = c.COBRO.FECHA_COBRO, NOMBRE_TIPO_COBRO = c.COBRO.TIPO_COBRO.NOMBRE, MONTO_PENDIENTE_TOTAL = c.NOTA_COBRO_DETALLE.Where(ncd => ncd.ACTIVO).Sum(ncd => ncd.MONTO_PENDIENTE), MONTO_PENDIENTE_FACTURA = c.NOTA_COBRO_DETALLE.Where(ncd => ncd.ACTIVO && ncd.FACTURA.ID == ID_FACTURA).Sum(ncd => ncd.MONTO_PENDIENTE) }).ToList(); _DTO_FACTURA.LISTA_PAGOS = (from p in pagos select new DTO_DETALLE_FACTURA_PAGO { ID_PAGO = p.ID, FECHA_PAGO = p.FECHA_PAGO, MONTO_PAGO_TOTAL = p.MONTO_PAGO, MONTO_PAGO_FACTURA = p.PAGO_DETALLE.Where(pd => pd.ACTIVO && pd.FACTURA_DETALLE.ACTIVO && pd.FACTURA_DETALLE.FACTURA.ID == ID_FACTURA).Sum(pd => pd.MONTO) }).ToList(); return _DTO_FACTURA; } } catch (Exception ex) { ISException.RegisterExcepcion(ex); Error = ex.Message; throw ex; } }
public void EmitirNotasCobros(DateTime FechaFacturacionDesde, DateTime FechaFacturacionHasta, int IdTipoCobro, int? IdCliente) { Init(); try { using (LQCEEntities context = new LQCEEntities()) { RepositorioFACTURACION _RepositorioFACTURACION = new RepositorioFACTURACION(context); RepositorioTIPO_COBRO _RepositorioTIPO_COBRO = new RepositorioTIPO_COBRO(context); RepositorioFACTURA _RepositorioFACTURA = new RepositorioFACTURA(context); RepositorioCLIENTE _RepositorioCLIENTE = new RepositorioCLIENTE(context); RepositorioVISTA_REPORTE_FACTURA _RepositorioVISTA_REPORTE_FACTURA = new RepositorioVISTA_REPORTE_FACTURA(context); TIPO_COBRO _TIPO_COBRO = _RepositorioTIPO_COBRO.GetById(IdTipoCobro); if (_TIPO_COBRO == null) throw new Exception("No se encuentra información del tipo de cobro"); COBRO _COBRO = new COBRO(); _COBRO.FECHA_COBRO = DateTime.Now; _COBRO.TIPO_COBRO = _TIPO_COBRO; _COBRO.ACTIVO = true; context.AddToCOBRO(_COBRO); var cliente_facturas = (from f in _RepositorioFACTURACION.GetFacturasPorNotificar(FechaFacturacionDesde, FechaFacturacionHasta, IdTipoCobro, IdCliente) group f by f.ID_CLIENTE into g select new { IdCliente = g.Key, Facturas = g }).ToList(); if (!cliente_facturas.Any()) throw new Exception("No hay facturas que notificar"); int correlativo = 1; foreach (var cf in cliente_facturas) { CLIENTE _CLIENTE = _RepositorioCLIENTE.GetById(cf.IdCliente); if (_CLIENTE == null) throw new Exception("No se encuentra información del cliente"); NOTA_COBRO _NOTA_COBRO = new NOTA_COBRO(); _NOTA_COBRO.COBRO = _COBRO; _NOTA_COBRO.CORRELATIVO = correlativo; _NOTA_COBRO.CLIENTE = _CLIENTE; _NOTA_COBRO.ACTIVO = true; context.AddToNOTA_COBRO(_NOTA_COBRO); foreach (var f in cf.Facturas) { FACTURA _FACTURA = _RepositorioFACTURA.GetById(f.ID); if (_FACTURA == null) throw new Exception("No se encuentra información de la factura "); VISTA_REPORTE_FACTURA _VISTA_REPORTE_FACTURA = _RepositorioVISTA_REPORTE_FACTURA.GetById(f.ID); if (_VISTA_REPORTE_FACTURA == null) throw new Exception("No se encuentra información de la factura "); NOTA_COBRO_DETALLE _NOTA_COBRO_DETALLE = new NOTA_COBRO_DETALLE(); _NOTA_COBRO_DETALLE.NOTA_COBRO = _NOTA_COBRO; _NOTA_COBRO_DETALLE.FACTURA = _FACTURA; if (_FACTURA.PAGADA.HasValue && _FACTURA.PAGADA.Value == true) { _NOTA_COBRO_DETALLE.MONTO_PENDIENTE = 0; } else { _NOTA_COBRO_DETALLE.MONTO_PENDIENTE = _VISTA_REPORTE_FACTURA.SALDO_DEUDOR ?? 0; } _NOTA_COBRO_DETALLE.ACTIVO = true; context.AddToNOTA_COBRO_DETALLE(_NOTA_COBRO_DETALLE); } correlativo++; } context.SaveChanges(); try { ListaNotaCobro = GetReporteNotaCobroByID_COBRO(context, _COBRO.ID); string deviceInfo = "<DeviceInfo>" + " <OutputFormat>PDF</OutputFormat>" + " <PageWidth>8.2in</PageWidth>" + " <PageHeight>11.7in</PageHeight>" + " <MarginTop>0in</MarginTop>" + " <MarginLeft>0in</MarginLeft>" + " <MarginRight>0in</MarginRight>" + " <MarginBottom>0in</MarginBottom>" + "</DeviceInfo>"; Warning[] warnings; m_streams_NotaCobro = new List<Stream>(); List<DTO_REPORTE_NOTA_COBRO> ListaNotaCobroEncabezado = (from nc in ListaNotaCobro group nc by nc.CORRELATIVO into g select new DTO_REPORTE_NOTA_COBRO { ID_COBRO = g.FirstOrDefault().ID_COBRO, ID_CLIENTE = g.FirstOrDefault().ID_CLIENTE, CORRELATIVO = g.Key, NOMBRE_CLIENTE = g.FirstOrDefault().NOMBRE_CLIENTE, RUT_CLIENTE = g.FirstOrDefault().RUT_CLIENTE, NOMBRE_REPORTE = g.FirstOrDefault().NOMBRE_REPORTE, }).ToList(); // Documento 1: Un archivo con todas las notas de cobro emitidas Hashtable propiedades = new Hashtable(); propiedades.Add("Fecha de Documento", _COBRO.FECHA_COBRO); propiedades.Add("Tipo de Documento", "Nota de Cobro " + ListaNotaCobroEncabezado.FirstOrDefault().NOMBRE_REPORTE); propiedades.Add("Formato", "Consolidado"); ReportViewer _ReportViewer = new ReportViewer(); _ReportViewer.ProcessingMode = ProcessingMode.Local; _ReportViewer.LocalReport.ShowDetailedSubreportMessages = true; _ReportViewer.LocalReport.DataSources.Clear(); _ReportViewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", ListaNotaCobroEncabezado)); _ReportViewer.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(ReporteNotaCobro_SubreportProcessingEventHandler); _ReportViewer.LocalReport.ReportEmbeddedResource = "LQCE.Transaccion.Reporte." + ListaNotaCobroEncabezado.FirstOrDefault().NOMBRE_REPORTE; _ReportViewer.LocalReport.Render("PDF", deviceInfo, CreateStreamNotaCobro, out warnings); foreach (Stream stream in m_streams_NotaCobro) stream.Position = 0; using (SPWeb spWeb = new SPSite(Settings.Default.SP_WEB).OpenWeb()) { SPList spList = spWeb.GetList(Settings.Default.SP_LIBRERIA_FACTURAS); string strNombreFactura = DateTime.Now.ToString("yyyyMMddhhmmss") + "_NotaCobro_" + _COBRO.TIPO_COBRO.NOMBRE + ".pdf"; spList.RootFolder.Files.Add(spList.RootFolder.Url + "/" + strNombreFactura, m_streams_NotaCobro[0], propiedades, true); spList.Update(); } foreach (var item in ListaNotaCobroEncabezado) { m_streams_NotaCobroIndividual = new List<Stream>(); // Documento 2: Un archivo por cada detalles de facturas List<DTO_REPORTE_NOTA_COBRO> LISTA_DTO_REPORTE_NOTA_COBRO2 = new List<DTO_REPORTE_NOTA_COBRO>(); LISTA_DTO_REPORTE_NOTA_COBRO2.Add(item); Hashtable propiedadesDetalle = new Hashtable(); propiedadesDetalle.Add("Fecha de Documento", _COBRO.FECHA_COBRO); propiedadesDetalle.Add("Tipo de Documento", "Nota de Cobro " + item.NOMBRE_REPORTE); propiedadesDetalle.Add("Formato", "Individual"); propiedadesDetalle.Add("RUT Cliente", item.RUT_CLIENTE); propiedadesDetalle.Add("Nombre Cliente", item.NOMBRE_CLIENTE); ReportViewer _ReportViewerDetalle = new ReportViewer(); _ReportViewerDetalle.ProcessingMode = ProcessingMode.Local; _ReportViewerDetalle.LocalReport.ShowDetailedSubreportMessages = true; _ReportViewerDetalle.LocalReport.DataSources.Clear(); _ReportViewerDetalle.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", LISTA_DTO_REPORTE_NOTA_COBRO2)); _ReportViewerDetalle.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(ReporteNotaCobro_SubreportProcessingEventHandler); _ReportViewerDetalle.LocalReport.ReportEmbeddedResource = "LQCE.Transaccion.Reporte." + item.NOMBRE_REPORTE; _ReportViewerDetalle.LocalReport.Render("PDF", deviceInfo, CreateStreamNotaCobroIndividual, out warnings); foreach (Stream stream in m_streams_NotaCobroIndividual) stream.Position = 0; using (SPWeb spWeb = new SPSite(Settings.Default.SP_WEB).OpenWeb()) { SPList spList = spWeb.GetList(Settings.Default.SP_LIBRERIA_FACTURAS); string strNombreFactura = DateTime.Now.ToString("yyyyMMddhhmmss") + "_NotaCobroIndividual_" + _COBRO.TIPO_COBRO.NOMBRE + "_" + item.NOMBRE_CLIENTE + ".pdf"; spList.RootFolder.Files.Add(spList.RootFolder.Url + "/" + strNombreFactura, m_streams_NotaCobroIndividual[0], propiedadesDetalle, true); spList.Update(); } } } catch (Exception ex) { RepositorioCOBRO _RepositorioCOBRO = new RepositorioCOBRO(context); COBRO _NUEVO_COBRO = _RepositorioCOBRO.GetByIdWithReferences(_COBRO.ID); _NUEVO_COBRO.ACTIVO = false; foreach (var _NOTA_COBRO in _NUEVO_COBRO.NOTA_COBRO) { _NOTA_COBRO.ACTIVO = false; foreach (var _NOTA_COBRO_DETALLE in _NOTA_COBRO.NOTA_COBRO_DETALLE) { _NOTA_COBRO_DETALLE.ACTIVO = false; context.ApplyPropertyChanges("NOTA_COBRO_DETALLE", _NOTA_COBRO_DETALLE); } context.ApplyPropertyChanges("NOTA_COBRO", _NOTA_COBRO); } context.ApplyPropertyChanges("COBRO", _NUEVO_COBRO); context.SaveChanges(); throw ex; } } } catch (Exception ex) { ISException.RegisterExcepcion(ex); Error = ex.Message; throw ex; } }