/// <summary>
        /// Guarda los costos de los movimientos
        /// </summary>
        /// <param name="distribucionDeIngredientes"></param>
        /// <param name="almacenMovimientoID"></param>
        /// <param name="distribucionorganizaciones"></param>
        /// <returns></returns>
        internal bool GuardarCosto(DistribucionDeIngredientesInfo distribucionDeIngredientes, long almacenMovimientoID, DistribucionDeIngredientesOrganizacionInfo distribucionorganizaciones)
        {
            bool regreso = true;

            try
            {
                var cuentaSAPBL = new CuentaSAPBL();
                IList <CuentaSAPInfo> cuentasSAP = cuentaSAPBL.ObtenerTodos(EstatusEnum.Activo);
                var almacenMovimientoCostoBl     = new AlmacenMovimientoCostoBL();
                if (almacenMovimientoID > 0)
                {
                    //Se obtiene el porcentaje a cobrar cargar por organizacion
                    decimal porcentajeSurtido = distribucionDeIngredientes.CantidadTotal > 0 ?
                                                (decimal)distribucionorganizaciones.CantidadSurtir / (decimal)distribucionDeIngredientes.CantidadTotal : 0;
                    foreach (var costoDistribucion in distribucionDeIngredientes.ListaPremezclaDistribucionCosto)
                    {
                        var almacenMovimientoCosto = new AlmacenMovimientoCostoInfo
                        {
                            AlmacenMovimientoId = almacenMovimientoID,
                            Iva               = costoDistribucion.Iva,
                            Retencion         = costoDistribucion.Retencion,
                            CostoId           = costoDistribucion.Costo.CostoID,
                            Importe           = costoDistribucion.Importe * porcentajeSurtido,
                            UsuarioCreacionId = costoDistribucion.UsuarioCreacionID
                        };

                        if (costoDistribucion.TieneCuenta)
                        {
                            CuentaSAPInfo cuenta =
                                cuentasSAP.FirstOrDefault(
                                    sap => sap.CuentaSAP.Trim().Equals(costoDistribucion.CuentaSAP.CuentaSAP.Trim()));
                            if (cuenta != null)
                            {
                                almacenMovimientoCosto.CuentaSAPID = cuenta.CuentaSAPID;
                                almacenMovimientoCosto.TieneCuenta = costoDistribucion.TieneCuenta;
                            }
                        }
                        else
                        {
                            almacenMovimientoCosto.ProveedorId = costoDistribucion.Proveedor.ProveedorID;
                        }

                        almacenMovimientoCostoBl.Crear(almacenMovimientoCosto);
                    }
                }
            }
            catch (ExcepcionGenerica)
            {
                regreso = false;
                throw;
            }
            catch (Exception ex)
            {
                regreso = false;
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            return(regreso);
        }
示例#2
0
        /// <summary>
        /// Obtiene una salida de producto por id
        /// </summary>
        /// <param name="salidaProducto"></param>
        /// <returns></returns>
        internal SalidaProductoInfo ObtenerPorSalidaProductoId(SalidaProductoInfo salidaProducto)
        {
            try
            {
                var salidaProductoDal = new SalidaProductoDAL();
                salidaProducto = salidaProductoDal.ObtenerPorSalidaProductoId(salidaProducto);
                if (salidaProducto != null)
                {
                    if (salidaProducto.Organizacion.OrganizacionID > 0)
                    {
                        var organizacionBl = new OrganizacionBL();
                        salidaProducto.Organizacion =
                            organizacionBl.ObtenerPorID(salidaProducto.Organizacion.OrganizacionID);
                    }

                    if (salidaProducto.OrganizacionDestino.OrganizacionID > 0)
                    {
                        var organizacionBl = new OrganizacionBL();
                        salidaProducto.Organizacion =
                            organizacionBl.ObtenerPorID(salidaProducto.OrganizacionDestino.OrganizacionID);
                    }

                    if (salidaProducto.Almacen.AlmacenID > 0)
                    {
                        var almacenBl = new AlmacenBL();
                        salidaProducto.Almacen = almacenBl.ObtenerPorID(salidaProducto.Almacen.AlmacenID);
                    }

                    if (salidaProducto.AlmacenInventarioLote.AlmacenInventarioLoteId > 0)
                    {
                        var almacenInventarioLoteBl = new AlmacenInventarioLoteBL();
                        salidaProducto.AlmacenInventarioLote =
                            almacenInventarioLoteBl.ObtenerAlmacenInventarioLotePorId(
                                salidaProducto.AlmacenInventarioLote.AlmacenInventarioLoteId);
                    }

                    if (salidaProducto.Cliente.ClienteID > 0)
                    {
                        var clienteBl = new ClienteBL();
                        salidaProducto.Cliente = clienteBl.ObtenerPorID(salidaProducto.Cliente.ClienteID);
                    }
                    if (salidaProducto.CuentaSAP.CuentaSAPID > 0)
                    {
                        var cuentaSapBl = new CuentaSAPBL();
                        salidaProducto.CuentaSAP = cuentaSapBl.ObtenerPorID(salidaProducto.CuentaSAP.CuentaSAPID);
                    }

                    if (salidaProducto.TipoMovimiento.TipoMovimientoID > 0)
                    {
                        var tipoMovimientoBl = new TipoMovimientoBL();
                        salidaProducto.TipoMovimiento =
                            tipoMovimientoBl.ObtenerPorID(salidaProducto.TipoMovimiento.TipoMovimientoID);
                    }
                }
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(salidaProducto);
        }
示例#3
0
        /// <summary>
        /// Obtiene un contrato por id
        /// </summary>
        /// <param name="contratoInfo"></param>
        /// <returns>ContratoInfo</returns>
        internal ContratoInfo ObtenerPorId(ContratoInfo contratoInfo)
        {
            ContratoInfo contrato;

            try
            {
                Logger.Info();
                var contratoDAL = new ContratoDAL();
                contrato = contratoDAL.ObtenerPorId(contratoInfo);

                if (contrato != null)
                {
                    if (contrato.Organizacion.OrganizacionID > 0)
                    {
                        var organizacionBl = new OrganizacionBL();
                        contrato.Organizacion = organizacionBl.ObtenerPorID(contrato.Organizacion.OrganizacionID);
                    }

                    if (contrato.Producto.ProductoId > 0)
                    {
                        var productoBl = new ProductoBL();
                        contrato.Producto = productoBl.ObtenerPorID(contrato.Producto);
                    }

                    if (contrato.Proveedor.ProveedorID > 0)
                    {
                        var proveedorBl = new ProveedorBL();
                        contrato.Proveedor =
                            proveedorBl.ObtenerPorID(contrato.Proveedor.ProveedorID);
                    }

                    if (contrato.TipoContrato.TipoContratoId > 0)
                    {
                        var tipoContratoBl = new TipoContratoBL();
                        contrato.TipoContrato =
                            tipoContratoBl.ObtenerPorId(contrato.TipoContrato.TipoContratoId);
                        contrato.tipocontratodescripcion = contrato.TipoContrato.Descripcion.ToString();
                    }

                    if (contrato.TipoFlete != null && contrato.TipoFlete.TipoFleteId > 0)
                    {
                        var tipoFleteBl = new TipoFleteBL();
                        contrato.TipoFlete =
                            tipoFleteBl.ObtenerPorId(contrato.TipoFlete.TipoFleteId);
                    }

                    if (contrato.TipoCambio != null && contrato.TipoCambio.TipoCambioId > 0)
                    {
                        var tipoCambioBl = new TipoCambioBL();
                        contrato.TipoCambio =
                            tipoCambioBl.ObtenerPorId(contrato.TipoCambio.TipoCambioId);
                    }

                    if (contrato.ContratoId > 0)
                    {
                        var contratoDetalleBl = new ContratoDetalleBL();
                        contrato.ListaContratoDetalleInfo = contratoDetalleBl.ObtenerPorContratoId(contrato);
                    }

                    //Obtener precio y cantidad por tonelada
                    contrato.CantidadToneladas = (int)(contrato.Cantidad / 1000);
                    if (contrato.TipoCambio != null)
                    {
                        if (contrato.TipoCambio.Descripcion == Properties.ResourceServices.ContratoBL_DescripcionMonedaDolarMayuscula)
                        {
                            contrato.PrecioToneladas = (contrato.Precio * 1000) / contrato.TipoCambio.Cambio;
                        }
                        else
                        {
                            contrato.PrecioToneladas = contrato.Precio * 1000;
                        }
                    }

                    if (contrato.Cuenta != null)
                    {
                        if (contrato.Cuenta.CuentaSAPID > 0)
                        {
                            CuentaSAPBL cuentaSapBl = new CuentaSAPBL();
                            contrato.Cuenta.Activo = EstatusEnum.Activo;
                            contrato.Cuenta        = cuentaSapBl.ObtenerPorFiltroSinTipo(contrato.Cuenta);
                        }
                    }
                    //
                }
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(contrato);
        }