/// <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);
        }
Beispiel #2
0
        /// <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
        }