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; } }
protected List<DTO_REPORTE_DETALLEFACTURA_PRESTACION> GetReporteDetalleFacturaByID_FACTURA(int IdFactura) { Init(); try { using (LQCEEntities context = new LQCEEntities()) { RepositorioFACTURACION _RepositorioFACTURACION = new RepositorioFACTURACION(context); var q = _RepositorioFACTURACION.GetFacturaDetalleByIdFactura(IdFactura); var lista = (from fd in q select new DTO_REPORTE_DETALLEFACTURA_PRESTACION { ID_FACTURA = fd.FACTURA.ID, ID_CLIENTE = fd.FACTURA.CLIENTE.ID, NOMBRE_CLIENTE = fd.FACTURA.NOMBRE_CLIENTE, RUT_CLIENTE = fd.FACTURA.RUT_CLIENTE, DETALLE = fd.FACTURA.DETALLE, ID_FACTURA_DETALLE = fd.ID, NUMERO_FICHA = fd.PRESTACION.ID, MONTO_TOTAL = fd.MONTO_TOTAL, FECHA_RECEPCION = fd.PRESTACION.FECHA_RECEPCION, NOMBRE = fd.PRESTACION.PRESTACION_HUMANA != null ? fd.PRESTACION.PRESTACION_HUMANA.NOMBRE : fd.PRESTACION.PRESTACION_VETERINARIA.NOMBRE, MEDICO = fd.PRESTACION.MEDICO, EXAMENES = "" }).ToList(); foreach (var i in lista) { string examenes = ""; FACTURA_DETALLE _FACTURA_DETALLE = _RepositorioFACTURACION.GetFacturaDetalleByIdDetalleFactura(i.ID_FACTURA_DETALLE).FirstOrDefault(); if (_FACTURA_DETALLE != null) { if(_FACTURA_DETALLE.PRESTACION != null) { foreach (var e in _FACTURA_DETALLE.PRESTACION.PRESTACION_EXAMEN.Where(pe => pe.ACTIVO)) { if(e.EXAMEN != null) { if (!string.IsNullOrEmpty(examenes)) examenes += ", "; examenes += e.EXAMEN.NOMBRE; } } } } i.EXAMENES = examenes; } return lista; } } catch (Exception ex) { ISException.RegisterExcepcion(ex); Error = ex.Message; throw ex; } }