/// <summary> /// Asigna el proveedor SuKarne al Costo del Ganado /// </summary> /// <param name="entradaGanadoCosteo"></param> private void AsignarProveedorSuKarne300(EntradaGanadoCosteoInfo entradaGanadoCosteo) { var parametroGeneralBL = new ParametroGeneralBL(); ParametroGeneralInfo parametroGeneral = parametroGeneralBL.ObtenerPorClaveParametro(ParametrosEnum.PolizaSacrificio300.ToString()); if (parametroGeneral != null) { var proveedor = new ProveedorInfo { CodigoSAP = parametroGeneral.Valor }; var proveedorBL = new ProveedorBL(); proveedor = proveedorBL.ObtenerPorCodigoSAP(proveedor); if (proveedor != null) { EntradaGanadoCostoInfo entradaGanadoCosto = entradaGanadoCosteo.ListaCostoEntrada.FirstOrDefault(id => id.Costo.CostoID == 1); if (entradaGanadoCosto != null) { entradaGanadoCosto.Proveedor = proveedor; entradaGanadoCosto.TieneCuenta = false; } } } }
/// <summary> /// Obtiene la Lista de los Costos Automaticos, para la funcionalidad de Costeo Entrada Ganado /// </summary> /// <param name="entradaGanado"></param> /// <returns></returns> internal List <EntradaGanadoCostoInfo> ObtenerCostosAutomaticos(EntradaGanadoInfo entradaGanado) { List <EntradaGanadoCostoInfo> listaEntradaGanadoCostos = new List <EntradaGanadoCostoInfo>(); try { Logger.Info(); var costoOrganizacionDAL = new CostoOrganizacionDAL(); var listaCostos = costoOrganizacionDAL.ObtenerPorOrganizacion(entradaGanado); if (listaCostos == null) { return(listaEntradaGanadoCostos); } listaCostos.ForEach(costo => { var entradaGanadoCosto = new EntradaGanadoCostoInfo { Costo = costo.Costo, Importe = costo.Importe }; listaEntradaGanadoCostos.Add(entradaGanadoCosto); }); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(listaEntradaGanadoCostos); }
/// <summary> /// Agrupa los costos de ganado de la interfaz /// </summary> /// <param name="entradaGanadoCosteo"></param> /// <param name="organizacionId"></param> /// <param name="interfaceSalidaTraspaso"></param> /// <param name="interfaceSalidaTraspasoCosto"></param> private void AgruparValoresInterfaz(EntradaGanadoCosteoInfo entradaGanadoCosteo, int organizacionId, InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso, List <InterfaceSalidaTraspasoCostoInfo> interfaceSalidaTraspasoCosto) { var interfaceSalidaBL = new InterfaceSalidaBL(); var costosAgrupados = (from costos in entradaGanadoCosteo.ListaCostoEntrada group costos by costos.Costo.CostoID into costoAgrupado let interfaceSalidaCostoInfo = costoAgrupado.FirstOrDefault() let claveContable = interfaceSalidaBL.ObtenerCuentaInventario(interfaceSalidaCostoInfo.Costo, organizacionId, ClaveCuenta.CuentaInventarioIntensivo) where interfaceSalidaCostoInfo != null select new EntradaGanadoCostoInfo { Costo = interfaceSalidaCostoInfo.Costo, TieneCuenta = true, Importe = costoAgrupado.Sum(cos => cos.Importe), CuentaProvision = claveContable.Valor, DescripcionCuenta = claveContable.Descripcion, Origen = true }).ToList(); entradaGanadoCosteo.ListaCalidadGanado = entradaGanadoCosteo.ListaCalidadGanado .GroupBy(calidad => calidad.CalidadGanado.CalidadGanadoID) .Select(calidad => new EntradaGanadoCalidadInfo { CalidadGanado = new CalidadGanadoInfo { CalidadGanadoID = calidad.Key, Calidad = calidad.Select(cal => cal.CalidadGanado.Calidad). FirstOrDefault(), Descripcion = calidad.Select(cal => cal.CalidadGanado.Descripcion). FirstOrDefault(), Sexo = calidad.Select( id => id.CalidadGanado.Sexo). FirstOrDefault() }, Valor = calidad.Sum(cal => cal.Valor), }).ToList(); decimal importeGanado = costosAgrupados.Where(imp => imp.Costo.CostoID == 1).Select(imp => imp.Importe).FirstOrDefault(); int cabezas = entradaGanadoCosteo.ListaCalidadGanado.Sum(cab => cab.Valor); importeGanado = importeGanado + (320 * cabezas); EntradaGanadoCostoInfo costoGanado = costosAgrupados.FirstOrDefault(id => id.Costo.CostoID == 1); decimal costosNoGanado = costosAgrupados.Where(id => id.Costo.CostoID != 1).Sum(imp => imp.Importe); importeGanado += costosNoGanado; costoGanado.Importe = importeGanado; entradaGanadoCosteo.ListaCostoEntrada = costosAgrupados.Where(id => id.Costo.CostoID == 1).ToList(); foreach (var entradaDetalle in entradaGanadoCosteo.ListaEntradaDetalle) { var interfaceDetalle = interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.FirstOrDefault( det => det.TipoGanado.TipoGanadoID == entradaDetalle.TipoGanado.TipoGanadoID); if (interfaceDetalle != null) { decimal importeGanadoDetalle = interfaceSalidaTraspasoCosto.Where( cos => cos.InterfaceSalidaTraspasoDetalle.InterfaceSalidaTraspasoDetalleID == interfaceDetalle.InterfaceSalidaTraspasoDetalleID && cos.Costo.CostoID == Costo.CostoGanado.GetHashCode()).Sum(cos => cos.Importe); importeGanadoDetalle = importeGanadoDetalle + (320 * entradaDetalle.Cabezas); decimal importeGanadoDetalleNoGanado = interfaceSalidaTraspasoCosto.Where( cos => cos.InterfaceSalidaTraspasoDetalle.InterfaceSalidaTraspasoDetalleID == interfaceDetalle.InterfaceSalidaTraspasoDetalleID && cos.Costo.CostoID != Costo.CostoGanado.GetHashCode()).Sum(cos => cos.Importe); importeGanadoDetalle = importeGanadoDetalle + importeGanadoDetalleNoGanado; entradaDetalle.Importe = importeGanadoDetalle; entradaDetalle.PrecioKilo = entradaDetalle.Importe / entradaDetalle.PesoOrigen; } } //entradaGanadoCosteo.ListaEntradaDetalle = // entradaGanadoCosteo.ListaEntradaDetalle.GroupBy(tipo => tipo.TipoGanado.TipoGanadoID).Select( // detalle => new EntradaDetalleInfo // { // TipoGanado = new TipoGanadoInfo // { // TipoGanadoID = detalle.Key, // Descripcion = // detalle.Select( // des => // des.TipoGanado.Descripcion). // FirstOrDefault() // }, // Cabezas = detalle.Sum(cab => cab.Cabezas), // PesoOrigen = detalle.Sum(peso => peso.PesoOrigen), // FechaSalidaInterface = // detalle.Select(fecha => fecha.FechaSalidaInterface).FirstOrDefault(), // PrecioKilo = importeGanado / detalle.Sum(peso => peso.PesoOrigen), // Importe = // (importeGanado / detalle.Sum(peso => peso.PesoOrigen)) * // detalle.Sum(peso => peso.PesoOrigen) // }).ToList(); }