/// <summary> /// Obtiene el paquete de facturación según un tipo de comprobante /// </summary> /// <param name="tipoContrato">Tipo de comporbante</param> /// <returns>Generador de paquetes de facturación</returns> private IGeneradorPaquetesFacturacionBR ObtenerGeneradorPaquetes(ETipoContrato tipoContrato) { IGeneradorPaquetesFacturacionBR generador = null; switch (tipoContrato) { case ETipoContrato.FSL: generador = new GeneradorPaqueteFacturacionFSLBR(); break; case ETipoContrato.RD: generador = new GeneradorPaqueteFacturacionRDBR(); break; case ETipoContrato.CM: generador = new GeneradorPaqueteFacturacionManttoBR(); break; case ETipoContrato.SD: generador = new GeneradorPaqueteFacturacionManttoBR(); break; } return(generador); }
/// <summary> /// Agrega un costo adicional a la factura /// </summary> public void AgregarCostoAdicional() { //RI0024, Validación de precio mayor a cero if (this.vista.Precio <= 0) { throw new Exception("El precio unitario del costo adicional debe de ser mayor a cero"); } if (string.IsNullOrEmpty(this.vista.DescripcionProductoServicio)) { throw new Exception("El producto o servicio es obligatorio."); } IGeneradorPaquetesFacturacionBR generador = this.ObtenerGeneradorPaquetes(this.vista.TipoContrato.GetValueOrDefault()); DetalleTransaccionBO detalle = new DetalleTransaccionBO() { ProductoServicio = new ProductoServicioBO() }; int?id = this.vista.CostosAdicionales .Select(it => (int?)it.Id) .Max(); if (!id.HasValue) { id = 0; } id++; detalle.Id = id; detalle.Cantidad = 1; detalle.UnidadMedida = generador.UnidadMedida; detalle.CostoUnitario = generador.Costo; detalle.AplicaIVA = true; detalle.Articulo = new Basicos.BO.ArticuloBO(); //SC0030 detalle.Articulo.Nombre = String.Format("{0}: {1}", this.vista.Concepto, this.vista.Descripcion != null ? this.vista.Descripcion.ToUpper() : null); detalle.PrecioUnitario = this.vista.Precio; detalle.DescuentoUnitario = 0M; detalle.RetencionUnitaria = 0M; detalle.TipoRenglon = this.vista.Concepto; detalle.ProductoServicio.Id = this.vista.ProductoServicioId; detalle.ProductoServicio.NombreCorto = this.vista.ClaveProductoServicio; detalle.ProductoServicio.Nombre = this.vista.DescripcionProductoServicio; detalle.Activo = true; this.vista.CostosAdicionales.Add(detalle); this.vista.MostrarListaCostosAdicionales(); this.Limpiar(); }
/// <summary> /// Agrega un costo adicional a la factura /// </summary> public void AgregarCostoAdicional() { //RI0024, Validación de precio mayor a cero if (this.vista.Precio <= 0) { throw new Exception("El precio unitario del costo adicional debe de ser mayor a cero"); } if (string.IsNullOrEmpty(this.vista.DescripcionProductoServicio)) { throw new Exception("El producto o servicio es obligatorio."); } IGeneradorPaquetesFacturacionBR generador = this.ObtenerGeneradorPaquetes(this.vista.TipoContrato.GetValueOrDefault()); DetalleTransaccionBO detalle = new DetalleTransaccionBO() { ProductoServicio = new ProductoServicioBO() }; int?id = this.vista.CostosAdicionales .Select(it => (int?)it.Id) .Max(); if (!id.HasValue) { id = 0; } id++; detalle.Id = id; detalle.Cantidad = 1; detalle.UnidadMedida = generador.UnidadMedida; detalle.CostoUnitario = generador.Costo; detalle.AplicaIVA = true; detalle.Articulo = new Basicos.BO.ArticuloBO(); //SC0030 detalle.Articulo.Nombre = String.Format("{0}: {1}", this.vista.Concepto, this.vista.Descripcion != null ? this.vista.Descripcion.ToUpper() : null); detalle.Articulo.NombreCorto = this.vista.ClaveProductoServicio; detalle.PrecioUnitario = this.vista.Precio; detalle.DescuentoUnitario = 0M; detalle.RetencionUnitaria = 0M; detalle.TipoRenglon = this.vista.Concepto; detalle.ProductoServicio.Id = this.vista.ProductoServicioId; detalle.ProductoServicio.NombreCorto = this.vista.ClaveProductoServicio; detalle.ProductoServicio.Nombre = this.vista.DescripcionProductoServicio; detalle.Activo = true; this.vista.CostosAdicionales.Add(detalle); this.vista.MostrarListaCostosAdicionales(); this.Limpiar(); #region [Agregar costo adicional a la sesión] //CargoAdicionalModel CostoAdicional = new CargoAdicionalModel(); //CostoAdicional.LineaCostoAdicionalID = id; //CostoAdicional.Modificable = true; //CostoAdicional.TipoRenglon= Convert.ToInt32(this.vista.Concepto); //CostoAdicional.Cantidad = 1; //CostoAdicional.AplicaIVA = true; //CostoAdicional.PrecioUnitario = generador.Costo; //CostoAdicional.DescuentoUnitario = 0M; //CostoAdicional.RetencionUnitario = 0M; //CostoAdicional.ClaveProductoServicio = this.vista.ClaveProductoServicio; //CostoAdicional.Activo = true; //CostoAdicional.Estatus = "N"; //List<LineasFacturaModel> linea = this.vista.LineaCostoFacturaModel as List<LineasFacturaModel>; //List<LineasFacturaModel> linea = this.vista.LineaCostoFacturaModel as List<LineasFacturaModel>; //foreach(LineasFacturaModel elemento in linea) //{ // if (elemento.PagoContratoPSLID == this.vista.PagoContratoID) { // if (elemento.CargosAdicionales == null) // elemento.CargosAdicionales = new List<CargoAdicionalModel>(); // elemento.CargosAdicionales.Add(CostoAdicional); // } //} //this.vista.LineaCostoFacturaModel = linea; //this.vista.MostrarCostoAdicionalFactura(this.vista.PagoContratoID); #endregion }