private void InicializaContexto() { var fechaPl = new FechaPL(); var fecha = fechaPl.ObtenerFechaActual(); Contexto = new InterfaceSalidaTraspasoInfo { FechaEnvio = fecha.FechaActual, OrganizacionId = AuxConfiguracion.ObtenerOrganizacionUsuario(), UsuarioCreacionID = AuxConfiguracion.ObtenerUsuarioLogueado(), LoteInfo = new LoteInfo(), CorralInfo = new CorralInfo(), LoteProyecion = new LoteProyeccionInfo(), TipoGanado = new TipoGanadoInfo(), ListaInterfaceSalidaTraspasoDetalle = new List <InterfaceSalidaTraspasoDetalleInfo>() }; if (Contexto.OrganizacionDestino == null || Contexto.OrganizacionDestino.OrganizacionID == 0) { Contexto.OrganizacionDestino = new OrganizacionInfo { TipoOrganizacion = new TipoOrganizacionInfo { TipoOrganizacionID = TipoOrganizacion.Ganadera. GetHashCode() } }; } skAyudaOrganizacion.AsignarFoco(); }
/// <summary> /// Obtiene los parametros para insertar un nuevo registro en la tabla InterfaceSalidaTraspaso /// </summary> /// <param name="interfaceSalidaTraspaso"></param> /// <returns></returns> internal static Dictionary <string, object> ObtenerParametrosCrear(InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@OrganizacionID", interfaceSalidaTraspaso.OrganizacionId }, { "@OrganizacionIDDestino", interfaceSalidaTraspaso.OrganizacionDestino.OrganizacionID }, { "@FolioTraspaso", interfaceSalidaTraspaso.FolioTraspaso }, { "@CabezasEnvio", interfaceSalidaTraspaso.CabezasEnvio }, { "@TraspasoGanado", interfaceSalidaTraspaso.TraspasoGanado }, { "@SacrifioGanado", interfaceSalidaTraspaso.SacrificioGanado }, { "@PesoTara", interfaceSalidaTraspaso.PesoTara }, { "@PesoBruto", interfaceSalidaTraspaso.PesoBruto }, { "@Activo", interfaceSalidaTraspaso.Activo.GetHashCode() }, { "@UsuarioCreacionID", interfaceSalidaTraspaso.UsuarioCreacionID } }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda una interface salida traspaso y regresa el item insertado. /// </summary> /// <param name="interfaceSalidaTraspaso"></param> /// <returns></returns> internal void Actualizar(InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso) { try { var interfaceSalidaTraspasoDal = new InterfaceSalidaTraspasoDAL(); interfaceSalidaTraspasoDal.Actualizar(interfaceSalidaTraspaso); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda una interface salida traspaso y regresa el item insertado. /// </summary> /// <param name="interfaceSalidaTraspaso"></param> /// <returns></returns> internal void Actualizar(InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso) { try { Logger.Info(); var parametros = AuxInterfaceSalidaTraspasoDAL.ObtenerParametrosActualizar(interfaceSalidaTraspaso); Update("InterfaceSalidaTraspaso_Actualizar", parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Complementa el concepto de poliza con los folios de traspaso /// </summary> /// <param name="polizasSacrificioSukarne"></param> /// <param name="lotesSacrificioFolios"></param> /// <param name="interfaceSalidaTraspaso"> </param> private void ComplementarConceptoPoliza(IList <PolizaInfo> polizasSacrificioSukarne , List <PolizaSacrificioModel> lotesSacrificioFolios , List <InterfaceSalidaTraspasoInfo> interfaceSalidaTraspaso) { PolizaSacrificioModel polizaSacrificioModel; List <PolizaInfo> polizas; var detalleTraspaso = new List <InterfaceSalidaTraspasoDetalleInfo>(); interfaceSalidaTraspaso.ForEach( detalle => detalleTraspaso.AddRange(detalle.ListaInterfaceSalidaTraspasoDetalle)); InterfaceSalidaTraspasoDetalleInfo interfaceSalidaTraspasoDetalle; InterfaceSalidaTraspasoInfo interfaceSalida; for (var indexLotes = 0; indexLotes < lotesSacrificioFolios.Count; indexLotes++) { polizaSacrificioModel = lotesSacrificioFolios[indexLotes]; polizas = polizasSacrificioSukarne.Where( concepto => concepto.Concepto .IndexOf( string.Format("{0}-{1}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio), StringComparison.Ordinal) >= 0).ToList(); if (polizas.Any()) { interfaceSalidaTraspasoDetalle = detalleTraspaso.FirstOrDefault( det => det.InterfaceSalidaTraspasoDetalleID == polizaSacrificioModel.InterfaceSalidaTraspasoDetalleID); if (interfaceSalidaTraspasoDetalle == null) { interfaceSalidaTraspasoDetalle = new InterfaceSalidaTraspasoDetalleInfo(); } interfaceSalida = interfaceSalidaTraspaso.FirstOrDefault( id => id.InterfaceSalidaTraspasoId == interfaceSalidaTraspasoDetalle.InterfaceSalidaTraspasoID); if (interfaceSalida == null) { interfaceSalida = new InterfaceSalidaTraspasoInfo(); } polizas.ForEach( con => con.Concepto = string.Format("{0} ST-{1}", con.Concepto, interfaceSalida.FolioTraspaso)); } } }
/// <summary> /// Guarda una interface salida traspaso y regresa el item insertado. /// </summary> /// <param name="interfaceSalidaTraspaso"></param> /// <returns></returns> internal InterfaceSalidaTraspasoInfo Crear(InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso) { InterfaceSalidaTraspasoInfo result; try { var interfaceSalidaTraspasoDal = new InterfaceSalidaTraspasoDAL(); result = interfaceSalidaTraspasoDal.Crear(interfaceSalidaTraspaso); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(result); }
/// <summary> /// Guarda una interface salida traspaso y regresa el item insertado. /// </summary> /// <param name="interfaceSalidaTraspaso"></param> public InterfaceSalidaTraspasoInfo Crear(InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso) { try { var interfaceSalidaTraspaspBl = new InterfaceSalidaTraspasoBL(); return(interfaceSalidaTraspaspBl.Crear(interfaceSalidaTraspaso)); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Obtiene los parametros para insertar un nuevo registro en la tabla InterfaceSalidaTraspaso /// </summary> /// <param name="interfaceSalidaTraspaso"></param> /// <returns></returns> internal static Dictionary <string, object> ObtenerParametrosActualizar(InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@InterfaceSalidaTraspasoID", interfaceSalidaTraspaso.InterfaceSalidaTraspasoId }, { "@CabezasEnvio", interfaceSalidaTraspaso.CabezasEnvio }, { "@PesoTara", interfaceSalidaTraspaso.PesoTara }, { "@PesoBruto", interfaceSalidaTraspaso.PesoBruto }, { "@UsuarioModificacionID", interfaceSalidaTraspaso.UsuarioModificacionID } }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda una lista de interface salida traspaso. /// </summary> /// <param name="interfaceSalidaTraspaso"></param> public Dictionary <long, decimal> GuardarListadoInterfaceSalidaTraspaso(InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso) { try { var interfaceSalidaTraspaspBl = new InterfaceSalidaTraspasoBL(); return(interfaceSalidaTraspaspBl.CrearLista(interfaceSalidaTraspaso)); } catch (ExcepcionServicio ex) { throw ex; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda una interface salida traspaso y regresa el item insertado. /// </summary> /// <param name="interfaceSalidaTraspaso"></param> /// <returns></returns> internal InterfaceSalidaTraspasoInfo Crear(InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso) { InterfaceSalidaTraspasoInfo result = null; try { Logger.Info(); var parametros = AuxInterfaceSalidaTraspasoDAL.ObtenerParametrosCrear(interfaceSalidaTraspaso); DataSet ds = Retrieve("InterfaceSalidaTraspaso_Crear", parametros); if (ValidateDataSet(ds)) { result = MapInterfaceSalidaTraspasoDAL.ObtenerPorId(ds); } } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(result); }
private void CargarInterfaceSalidaTraspaso() { try { var interfaceSalidaTraspasoPl = new InterfaceSalidaTraspasoPL(); Contexto = interfaceSalidaTraspasoPl.ObtenerInterfaceSalidaTraspasoPorFolioOrganizacion(Contexto); if (Contexto == null) { SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.TraspasoGanadoGordo_MensajeFolioInvalido, MessageBoxButton.OK, MessageImage.Warning); Inicializar(); TxtFolioTraspaso.Focus(); return; } listadoDeTraspaso = new ObservableCollection <InterfaceSalidaTraspasoDetalleInfo>(Contexto.ListaInterfaceSalidaTraspasoDetalle); GridOrganizacionesTraspaso.ItemsSource = listadoDeTraspaso; Contexto.CabezasEnvio = 0; skAyudaOrganizacion.IsEnabled = false; TxtFolioTraspaso.IsEnabled = false; Contexto.CorralInfo = new CorralInfo(); Contexto.LoteInfo = new LoteInfo(); Contexto.LoteProyecion = new LoteProyeccionInfo(); Contexto.UsuarioModificacionID = AuxConfiguracion.ObtenerUsuarioLogueado(); Contexto.OrganizacionId = AuxConfiguracion.ObtenerOrganizacionUsuario(); Contexto.TipoGanado = new TipoGanadoInfo(); HabilitarControlesPesos(); } catch (Exception ex) { Logger.Error(ex); SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.TraspasoGanadoGordo_MensajeErrorAlConsultarFolio, MessageBoxButton.OK, MessageImage.Warning); } }
/// <summary> /// Obtiene /// </summary> /// <param name="organizacionID"> </param> /// <param name="folioOrigen"> </param> /// <returns></returns> internal InterfaceSalidaTraspasoInfo ObtenerDatosInterfaceSalidaTraspaso(int organizacionID, int folioOrigen) { InterfaceSalidaTraspasoInfo result = null; try { Logger.Info(); Dictionary <string, object> parametros = AuxInterfaceSalidaTraspasoDAL.ObtenerParametrosDatosInterfaceSalidaTraspaso(organizacionID, folioOrigen); DataSet ds = Retrieve("InterfaceSalidaTraspaso_ObtenerPorFolioTraspaso", parametros); if (ValidateDataSet(ds)) { result = MapInterfaceSalidaTraspasoDAL.ObtenerDatosInterfaceSalidaTraspaso(ds); } } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(result); }
/// <summary> /// Obtiene los parametros para insertar un nuevo registro en la tabla InterfaceSalidaTraspaso /// </summary> /// <param name="interfaceSalidaTraspaso"></param> /// <returns></returns> internal static Dictionary <string, object> ObtenerParametrosInterfaceSalidaTraspasoPorFolioOrganizacion(InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso) { try { Logger.Info(); var parametros = new Dictionary <string, object> { { "@OrganizacionID", interfaceSalidaTraspaso.OrganizacionId }, { "@FolioTraspaso", interfaceSalidaTraspaso.FolioTraspaso } }; return(parametros); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Guarda una lista de interface salida traspaso. /// </summary> /// <param name="interfaceSalidaTraspaso"></param> internal Dictionary <long, decimal> CrearLista(InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso) { decimal costoGanado = 0; try { var interfaceSalidaTraspasoDal = new InterfaceSalidaTraspasoDAL(); using (var scope = new TransactionScope()) { interfaceSalidaTraspaso.TraspasoGanado = interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.Select(det => det.TraspasoGanado). FirstOrDefault(); interfaceSalidaTraspaso.SacrificioGanado = interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.Select(det => det.SacrificioGanado). FirstOrDefault(); InterfaceSalidaTraspasoInfo interfaceSalidaTraspasoGuardado; if (interfaceSalidaTraspaso.InterfaceSalidaTraspasoId > 0) { Actualizar(interfaceSalidaTraspaso); interfaceSalidaTraspasoGuardado = interfaceSalidaTraspaso; } else { var folioBL = new FolioBL(); interfaceSalidaTraspaso.FolioTraspaso = folioBL.ObtenerFolio(interfaceSalidaTraspaso.OrganizacionId , TipoFolio.TraspasoGanado); interfaceSalidaTraspasoGuardado = Crear(interfaceSalidaTraspaso); } var loteBL = new LoteBL(); if (interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.Any()) { interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.ForEach( det => det.InterfaceSalidaTraspasoID = interfaceSalidaTraspasoGuardado.InterfaceSalidaTraspasoId); interfaceSalidaTraspasoDal.CrearLista(interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle); List <LoteInfo> lotes = interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle .Select(lote => new LoteInfo { LoteID = lote.Lote.LoteID, Cabezas = lote.Cabezas, UsuarioModificacionID = lote.UsuarioCreacionID }).ToList(); loteBL.AcutalizaCabezasLoteXML(lotes); List <LoteInfo> lotesCabezas = lotes.GroupBy(lote => lote.LoteID).Select(x => new LoteInfo { LoteID = x.Key, Cabezas = x.Sum(cab => cab.Cabezas), UsuarioModificacionID = x.Select(usu => usu.UsuarioModificacionID).FirstOrDefault() }).ToList(); List <LoteInfo> lotesDesactivar = (from ist in interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle from lote in lotesCabezas where ist.Lote.Cabezas - lote.Cabezas == 0 select lote).ToList(); if (lotesDesactivar.Any()) { loteBL.DesactivarLoteXML(lotesDesactivar); } } #region POLIZA if (interfaceSalidaTraspasoGuardado.PesoBruto > 0 && interfaceSalidaTraspasoGuardado.PesoTara > 0) { var polizaBL = new PolizaBL(); int organizacionID = interfaceSalidaTraspasoGuardado.OrganizacionId; DateTime fechaEnvio = interfaceSalidaTraspasoGuardado.FechaEnvio; long folio = interfaceSalidaTraspasoGuardado.FolioTraspaso; IList <PolizaInfo> polizasGanado = polizaBL.ObtenerPolizaConDocumentoSAPPendientes(TipoPoliza.SalidaGanado, organizacionID, fechaEnvio); if (polizasGanado != null) { polizasGanado = polizasGanado.Where(con => con.Concepto.StartsWith(string.Format("ST-{0} ", folio))).ToList(); } if (polizasGanado == null || !polizasGanado.Any()) { InterfaceSalidaTraspasoInfo interfaceSalidaTraspasoSacarDetalle = ObtenerInterfaceSalidaTraspasoPorFolioOrganizacion(interfaceSalidaTraspasoGuardado); if (interfaceSalidaTraspasoSacarDetalle != null) { interfaceSalidaTraspasoGuardado.ListaInterfaceSalidaTraspasoDetalle = interfaceSalidaTraspasoSacarDetalle.ListaInterfaceSalidaTraspasoDetalle; } List <LoteInfo> lotesAnimal = interfaceSalidaTraspasoGuardado.ListaInterfaceSalidaTraspasoDetalle .Select(lote => new LoteInfo { LoteID = lote.Lote.LoteID }).ToList(); var animalBL = new AnimalBL(); List <AnimalInfo> animales = animalBL.ObtenerAnimalesPorLoteXML(lotesAnimal, interfaceSalidaTraspaso.OrganizacionId); int cabezas = interfaceSalidaTraspasoGuardado.ListaInterfaceSalidaTraspasoDetalle .Sum(cab => cab.Cabezas); if (cabezas > animales.Count) { throw new ExcepcionServicio("No existe suficiente inventario para realizar el traspaso."); } var polizaSalidaGanado = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaGanado); polizasGanado = polizaSalidaGanado.GeneraPoliza(interfaceSalidaTraspasoGuardado); if (polizasGanado != null && polizasGanado.Any()) { polizasGanado.ToList().ForEach(datos => { datos.OrganizacionID = interfaceSalidaTraspaso.OrganizacionId; datos.UsuarioCreacionID = interfaceSalidaTraspaso.UsuarioModificacionID ?? 0; datos.ArchivoEnviadoServidor = 1; }); polizaBL.GuardarServicioPI(polizasGanado, TipoPoliza.SalidaGanado); } } if (polizasGanado != null) { costoGanado = polizasGanado.Where(imp => imp.Importe.IndexOf('-') < 0).Sum( imp => Convert.ToDecimal(imp.Importe)); } } #endregion POLIZA scope.Complete(); } } catch (ExcepcionServicio ex) { Logger.Error(ex); throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(new Dictionary <long, decimal> { { interfaceSalidaTraspaso.FolioTraspaso, costoGanado } }); }
/// <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(); }
private IList <PolizaInfo> ObtenerPoliza(InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso, List <InterfaceSalidaTraspasoCostoInfo> interfaceSalidaTraspasoCosto) { var polizasSalidaTraspaso = new List <PolizaInfo>(); IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault( clave => clave.TipoPolizaID == TipoPoliza.PolizaSacrificioTraspasoGanado.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.PolizaSacrificioTraspasoGanado)); } string textoDocumento = tipoPoliza.TextoDocumento; string postFijoRef3 = tipoPoliza.PostFijoRef3; string prefijoConcepto = tipoPoliza.ClavePoliza; OrganizacionInfo organizacionDestino = ObtenerOrganizacionIVA(interfaceSalidaTraspaso.OrganizacionDestino.OrganizacionID); OrganizacionInfo organizacionOrigen = ObtenerOrganizacionIVA(interfaceSalidaTraspaso.OrganizacionId); string divisionOrigen = organizacionOrigen.Division; long folioTraspaso = interfaceSalidaTraspaso.FolioTraspaso; List <LoteInfo> lotes = interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.Select(lote => lote.Lote).ToList(); var costoBL = new CostoBL(); IList <CostoInfo> costos = costoBL.ObtenerTodos(EstatusEnum.Activo); List <InterfaceSalidaTraspasoCostoInfo> animalesPorLote; int loteID; const string COMPLEMENTO_REF1 = "czas."; const string UNIDAD_MOVIMIENTO = "Kgs."; const string DESCRIPCION_MOVIMIENTO = "CABEZAS"; DateTime fechaEnvio = interfaceSalidaTraspaso.FechaEnvio; ParametroOrganizacionInfo parametroOrganizacion = ObtenerParametroOrganizacionPorClave(organizacionOrigen.OrganizacionID, ParametrosEnum.CTACENTROCOSTOENG.ToString()); for (var indexLotes = 0; indexLotes < lotes.Count; indexLotes++) { Thread.Sleep(999); var ref3 = new StringBuilder(); ref3.Append("03"); ref3.Append(Convert.ToString(folioTraspaso).PadLeft(10, ' ')); ref3.Append(new Random(10).Next(10, 20)); ref3.Append(new Random(30).Next(30, 40)); ref3.Append(DateTime.Now.Millisecond); ref3.Append(postFijoRef3); var archivoFolio = new StringBuilder(ObtenerArchivoFolio(fechaEnvio)); //var numeroDocumento = // new StringBuilder(string.Format("{0}{1}", folioTraspaso, ObtenerNumeroReferencia)); var numeroDocumento = ObtenerNumeroReferenciaFolio(folioTraspaso); loteID = lotes[indexLotes].LoteID; animalesPorLote = (from ani in interfaceSalidaTraspasoCosto from movs in interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle where movs.Lote.LoteID == loteID && ani.InterfaceSalidaTraspasoDetalle.InterfaceSalidaTraspasoDetalleID == movs.InterfaceSalidaTraspasoDetalleID orderby ani.InterfaceSalidaTraspasoCostoID, ani.AnimalID select ani).ToList(); var renglon = 1; if (animalesPorLote.Any()) { int cabezas = interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.Where( loteId => loteId.Lote.LoteID == loteID).Select( cabe => cabe.Cabezas).FirstOrDefault(); List <long> animalesAFacturar = ObtenerAnimalesPorFacturar(animalesPorLote, cabezas); animalesPorLote = animalesPorLote.Join(animalesAFacturar, lote => lote.AnimalID, id => id, (lote, id) => lote). ToList(); var interfaceSalidaTraspasoCostoBL = new InterfaceSalidaTraspasoCostoBL(); interfaceSalidaTraspasoCostoBL.ActualizarFacturado(animalesAFacturar); if (animalesPorLote.Any()) { if (animalesPorLote.Any()) { animalesPorLote = animalesPorLote .GroupBy(costoAnimal => costoAnimal.Costo.CostoID) .Select(dinero => new InterfaceSalidaTraspasoCostoInfo { AnimalID = dinero.Select(id => id.AnimalID).FirstOrDefault(), Costo = new CostoInfo { CostoID = dinero.Key }, Importe = dinero.Sum(imp => imp.Importe), }).ToList(); ClaveContableInfo claveContableDestino; ClaveContableInfo claveContableOrigen; CostoInfo costo; CuentaSAPInfo cuentaSapDestino; CuentaSAPInfo cuentaSapOrigen; DatosPolizaInfo datos; PolizaInfo polizaSalida; decimal pesoOrigen = interfaceSalidaTraspaso.PesoBruto - interfaceSalidaTraspaso.PesoTara; InterfaceSalidaTraspasoCostoInfo animalCosto; for (var indexCostos = 0; indexCostos < animalesPorLote.Count; indexCostos++) { animalCosto = animalesPorLote[indexCostos]; costo = costos.FirstOrDefault( id => id.CostoID == animalCosto.Costo.CostoID); claveContableDestino = ObtenerCuentaInventario(costo , organizacionDestino.OrganizacionID , TipoPoliza.SalidaGanado); claveContableOrigen = ObtenerCuentaInventario(costo , organizacionOrigen.OrganizacionID , TipoPoliza. PolizaSacrificioTraspasoGanado); cuentaSapDestino = cuentasSap.FirstOrDefault( clave => clave.CuentaSAP.Equals(claveContableDestino.Valor)); if (cuentaSapDestino == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "NO SE CUENTA CON CONFIGURACIÓN PARA CUENTA DE INVENTARIO", claveContableDestino.Valor)); } cuentaSapOrigen = cuentasSap.FirstOrDefault( clave => clave.CuentaSAP.Equals(claveContableOrigen.Valor)); if (cuentaSapOrigen == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "NO SE CUENTA CON CONFIGURACIÓN PARA CUENTA DE TRANSITO", claveContableOrigen.Valor)); } datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaEnvio, Folio = folioTraspaso.ToString(), CabezasRecibidas = cabezas.ToString(), NumeroDocumento = folioTraspaso.ToString(), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (animalCosto.Importe * -1).ToString("F2") : animalCosto.Importe.ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(renglon++), Cabezas = Convert.ToString(cabezas), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio.ToString(), DescripcionCosto = cuentaSapOrigen.Descripcion, Cuenta = cuentaSapOrigen.CuentaSAP, CentroCosto = cuentaSapOrigen.CuentaSAP.StartsWith(PrefijoCuentaCentroCosto) ? parametroOrganizacion.Valor : string.Empty, PesoOrigen = pesoOrigen, Division = divisionOrigen, ComplementoRef1 = COMPLEMENTO_REF1, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} ,{2} {3}, {4} {5}", prefijoConcepto, folioTraspaso, cabezas, DESCRIPCION_MOVIMIENTO, pesoOrigen.ToString("N0"), UNIDAD_MOVIMIENTO), Sociedad = organizacionDestino.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacionDestino.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaTraspaso.Add(polizaSalida); datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaEnvio, Folio = folioTraspaso.ToString(), CabezasRecibidas = cabezas.ToString(), NumeroDocumento = folioTraspaso.ToString(), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? animalCosto.Importe.ToString("F2") : (animalCosto.Importe * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(renglon++), Cabezas = Convert.ToString(cabezas), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio.ToString(), DescripcionCosto = cuentaSapDestino.Descripcion, Cuenta = cuentaSapDestino.CuentaSAP, PesoOrigen = pesoOrigen, Division = divisionOrigen, ComplementoRef1 = COMPLEMENTO_REF1, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} ,{2} {3}, {4} {5}", prefijoConcepto, folioTraspaso, cabezas, DESCRIPCION_MOVIMIENTO, pesoOrigen.ToString("N0"), UNIDAD_MOVIMIENTO), Sociedad = organizacionDestino.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacionDestino.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaTraspaso.Add(polizaSalida); } } } } } return(polizasSalidaTraspaso); }
/// <summary> /// Obtiene /// </summary> /// <param name="organizacionID"> </param> /// <param name="folioOrigen"> </param> /// <returns></returns> internal EntradaGanadoCosteoInfo ObtenerDatosInterfaceSalidaTraspaso(int organizacionID, int folioOrigen) { EntradaGanadoCosteoInfo entradaGanadoCosteo = null; try { Logger.Info(); var interfaceSalidaTraspaspBl = new InterfaceSalidaTraspasoDAL(); InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso = interfaceSalidaTraspaspBl.ObtenerDatosInterfaceSalidaTraspaso(organizacionID, folioOrigen); if (interfaceSalidaTraspaso != null) { entradaGanadoCosteo = new EntradaGanadoCosteoInfo { ListaCalidadGanado = new List <EntradaGanadoCalidadInfo>(), ListaCostoEntrada = new List <EntradaGanadoCostoInfo>(), ListaEntradaDetalle = new List <EntradaDetalleInfo>(), }; var animalBL = new AnimalBL(); var interfaceSalidaTraspasoCostoBL = new InterfaceSalidaTraspasoCostoBL(); List <InterfaceSalidaTraspasoCostoInfo> interfaceSalidaTraspasoCosto = interfaceSalidaTraspasoCostoBL.ObtenerCostosInterfacePorDetalle(interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle); var animalesID = new HashSet <long>(interfaceSalidaTraspasoCosto.Select(id => id.AnimalID)); List <AnimalInfo> animalesTraspaso = animalesID.Select(ani => new AnimalInfo { AnimalID = ani, Activo = false }).ToList(); List <AnimalInfo> animalesMovimientoSalidaTraspaso = animalBL.ObtenerMovimientosPorXML(animalesTraspaso); if (animalesMovimientoSalidaTraspaso != null && animalesMovimientoSalidaTraspaso.Any()) { var animalesMovimiento = new List <AnimalMovimientoInfo>(); animalesMovimientoSalidaTraspaso.ForEach( movs => animalesMovimiento.AddRange(movs.ListaAnimalesMovimiento)); int pesoNeto = interfaceSalidaTraspaso.PesoBruto - interfaceSalidaTraspaso.PesoTara; decimal pesoLote = 0; int totalCabezas = interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.Sum(cab => cab.Cabezas); var costoBL = new CostoBL(); IList <CostoInfo> costos = costoBL.ObtenerTodos(EstatusEnum.Activo); int cabezas = interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.Sum(cabe => cabe.Cabezas); entradaGanadoCosteo.ListaCalidadGanado.AddRange( animalesMovimientoSalidaTraspaso.GroupBy(tipo => tipo.TipoGanado.TipoGanadoID).Select( calidad => new EntradaGanadoCalidadInfo { CalidadGanado = new CalidadGanadoInfo { CalidadGanadoID = calidad.Select( id => id.CalidadGanado.CalidadGanadoID). FirstOrDefault(), 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.Count(), })); pesoLote = (pesoNeto * cabezas) / totalCabezas; int pesoPromedio = Convert.ToInt32(pesoLote / totalCabezas); entradaGanadoCosteo.ListaEntradaDetalle.AddRange( interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.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.Select(des => des.Cabezas).FirstOrDefault(), PesoOrigen = detalle.Select(des => des.Cabezas).FirstOrDefault() * pesoPromedio, FechaSalidaInterface = interfaceSalidaTraspaso.FechaEnvio, })); int pesoTotalAgrupado = Convert.ToInt32(entradaGanadoCosteo.ListaEntradaDetalle.Sum(det => det.PesoOrigen)); if (pesoTotalAgrupado != pesoNeto) { int diferencia = pesoNeto - pesoTotalAgrupado; EntradaDetalleInfo primerDetalle = entradaGanadoCosteo.ListaEntradaDetalle.FirstOrDefault(); if (primerDetalle != null) { primerDetalle.PesoOrigen = primerDetalle.PesoOrigen + diferencia; } } //entradaGanadoCosteo.ListaEntradaDetalle.AddRange( // animalesMovimientoSalidaTraspaso.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.Count(), // PesoOrigen = pesoLote, // FechaSalidaInterface = interfaceSalidaTraspaso.FechaEnvio, // })); entradaGanadoCosteo.ListaCostoEntrada.AddRange(interfaceSalidaTraspasoCosto .GroupBy(cos => cos.Costo.CostoID).Select(grp => new EntradaGanadoCostoInfo { Costo = new CostoInfo { CostoID = grp.Key, ImporteCosto = grp.Sum(imp => imp.Importe), ClaveContable = costos.Where(id => id.CostoID == grp.Key) .Select(clave => clave.ClaveContable) .FirstOrDefault(), Descripcion = costos.Where(id => id.CostoID == grp.Key) .Select(desc => desc.Descripcion) .FirstOrDefault() }, Importe = grp.Sum(imp => imp.Importe), })); ValidarPeso(entradaGanadoCosteo, pesoNeto); AgruparValoresInterfaz(entradaGanadoCosteo, organizacionID, interfaceSalidaTraspaso, interfaceSalidaTraspasoCosto); CompletarCalidadGanado(entradaGanadoCosteo); AsignarProveedorSuKarne300(entradaGanadoCosteo); } } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(entradaGanadoCosteo); }
/// <summary> /// Obtiene el listado de organizaciones que se han registrado del dia /// </summary> /// <returns></returns> internal InterfaceSalidaTraspasoInfo ObtenerInterfaceSalidaTraspasoPorFolioOrganizacion(InterfaceSalidaTraspasoInfo interfaceSalidaTraspasoInfo) { try { Logger.Info(); var interfaceSalidaTraspaspBl = new InterfaceSalidaTraspasoDAL(); return(interfaceSalidaTraspaspBl.ObtenerInterfaceSalidaTraspasoPorFolioOrganizacion(interfaceSalidaTraspasoInfo)); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
private IList <PolizaInfo> GeneraDatosPoliza(InterfaceSalidaTraspasoInfo interfaceSalidaTraspaso) { var polizasSalidaTraspaso = new List <PolizaInfo>(); IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP(); TipoPolizaInfo tipoPoliza = TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.SalidaGanado.GetHashCode()); if (tipoPoliza == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "EL TIPO DE POLIZA", TipoPoliza.SalidaGanado)); } string textoDocumento = tipoPoliza.TextoDocumento; string postFijoRef3 = tipoPoliza.PostFijoRef3; string prefijoConcepto = tipoPoliza.ClavePoliza; OrganizacionInfo organizacionDestino = ObtenerOrganizacionIVA(interfaceSalidaTraspaso.OrganizacionDestino.OrganizacionID); OrganizacionInfo organizacionOrigen = ObtenerOrganizacionIVA(interfaceSalidaTraspaso.OrganizacionId); string divisionOrigen = organizacionOrigen.Division; long folioTraspaso = interfaceSalidaTraspaso.FolioTraspaso; var animalBL = new AnimalBL(); List <LoteInfo> lotes = interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.Select(lote => lote.Lote).ToList(); List <AnimalInfo> animalesMovimientoSalidaTraspaso = animalBL.ObtenerMovimientosPorLoteXML(lotes); List <AnimalInfo> animalesMovimientoSacrificadosLote = animalBL.ObtenerMovimientosPorLoteSacrificadosXML(lotes); if (animalesMovimientoSacrificadosLote == null) { animalesMovimientoSacrificadosLote = new List <AnimalInfo>(); } if (animalesMovimientoSalidaTraspaso != null && animalesMovimientoSalidaTraspaso.Any()) { var costosGanadoTransferido = new List <InterfaceSalidaTraspasoCostoInfo>(); var animalesMovimiento = new List <AnimalMovimientoInfo>(); animalesMovimientoSalidaTraspaso.ForEach( movs => animalesMovimiento.AddRange(movs.ListaAnimalesMovimiento)); var animalCostoBL = new AnimalCostoBL(); List <AnimalCostoInfo> costosAnimal = animalCostoBL.ObtenerCostosAnimal(animalesMovimientoSalidaTraspaso); var costoBL = new CostoBL(); IList <CostoInfo> costos = costoBL.ObtenerTodos(EstatusEnum.Activo); List <AnimalInfo> animalesPorLote; List <AnimalInfo> animalesSacrificadosPorLote; int loteID; const string COMPLEMENTO_REF1 = "czas."; const string UNIDAD_MOVIMIENTO = "Kgs."; const string DESCRIPCION_MOVIMIENTO = "CABEZAS"; DateTime fechaEnvio = interfaceSalidaTraspaso.FechaEnvio; for (var indexLotes = 0; indexLotes < lotes.Count; indexLotes++) { Thread.Sleep(999); var ref3 = new StringBuilder(); ref3.Append("03"); ref3.Append(Convert.ToString(folioTraspaso).PadLeft(10, ' ')); ref3.Append(new Random(10).Next(10, 20)); ref3.Append(new Random(30).Next(30, 40)); ref3.Append(DateTime.Now.Millisecond); ref3.Append(postFijoRef3); var archivoFolio = new StringBuilder(ObtenerArchivoFolio(fechaEnvio)); //var numeroDocumento = // new StringBuilder(string.Format("{0}{1}", folioTraspaso, ObtenerNumeroReferencia)); var numeroDocumento = ObtenerNumeroReferenciaFolio(folioTraspaso); loteID = lotes[indexLotes].LoteID; animalesPorLote = (from ani in animalesMovimientoSalidaTraspaso from movs in animalesMovimiento where ani.AnimalID == movs.AnimalID && movs.LoteID == loteID orderby ani.AnimalID select ani).ToList(); animalesSacrificadosPorLote = animalesMovimientoSacrificadosLote.Where(lote => lote.LoteID == loteID).ToList(); var renglon = 1; if (animalesPorLote.Any()) { int cabezas = interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.Where( loteId => loteId.Lote.LoteID == loteID).Select( cabe => cabe.Cabezas).FirstOrDefault(); int interfaceSalidaTraspasoDetalleID = interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.Where( loteId => loteId.Lote.LoteID == loteID).Select( cabe => cabe.InterfaceSalidaTraspasoDetalleID).FirstOrDefault(); animalesPorLote = EliminarAnimalesSacrificados(animalesPorLote, animalesSacrificadosPorLote); animalesPorLote = animalesPorLote.Take(cabezas).ToList(); if (animalesPorLote.Any()) { List <AnimalCostoInfo> costosAnimalesTraspasados = costosAnimal.Join(animalesPorLote, info => info.AnimalID, cos => cos.AnimalID, (info, cos) => info).ToList(); List <AnimalCostoInfo> costosAnimalesTraspasadosIndividual; if (costosAnimalesTraspasados.Any()) { costosAnimalesTraspasadosIndividual = costosAnimalesTraspasados .GroupBy(costoAnimal => new { costoAnimal.CostoID, costoAnimal.AnimalID }) .Select(dinero => new AnimalCostoInfo { AnimalCostoID = dinero.Select(id => id.AnimalCostoID).FirstOrDefault(), AnimalID = dinero.Key.AnimalID, CostoID = dinero.Key.CostoID, FechaCosto = dinero.Select(fecha => fecha.FechaCosto). FirstOrDefault(), FolioReferencia = dinero.Select(folio => folio.FolioReferencia). FirstOrDefault(), Importe = dinero.Sum(imp => imp.Importe), OrganizacionID = dinero.Select(org => org.OrganizacionID). FirstOrDefault(), TipoReferencia = dinero.Select(tipo => tipo.TipoReferencia). FirstOrDefault() }).ToList(); costosAnimalesTraspasados = costosAnimalesTraspasados .GroupBy(costoAnimal => costoAnimal.CostoID) .Select(dinero => new AnimalCostoInfo { AnimalCostoID = dinero.Select(id => id.AnimalCostoID).FirstOrDefault(), AnimalID = dinero.Select(id => id.AnimalID).FirstOrDefault(), CostoID = dinero.Select(id => id.CostoID).FirstOrDefault(), FechaCosto = dinero.Select(fecha => fecha.FechaCosto). FirstOrDefault(), FolioReferencia = dinero.Select(folio => folio.FolioReferencia). FirstOrDefault(), Importe = dinero.Sum(imp => imp.Importe), OrganizacionID = dinero.Select(org => org.OrganizacionID). FirstOrDefault(), TipoReferencia = dinero.Select(tipo => tipo.TipoReferencia). FirstOrDefault() }).ToList(); costosGanadoTransferido.AddRange( costosAnimalesTraspasadosIndividual.Select( dato => new InterfaceSalidaTraspasoCostoInfo { AnimalID = dato.AnimalID, Activo = EstatusEnum.Activo, Importe = dato.Importe, UsuarioCreacionID = interfaceSalidaTraspaso. UsuarioModificacionID.Value, Costo = new CostoInfo { CostoID = dato.CostoID }, InterfaceSalidaTraspasoDetalle = new InterfaceSalidaTraspasoDetalleInfo { InterfaceSalidaTraspasoDetalleID = interfaceSalidaTraspasoDetalleID } })); ClaveContableInfo claveContableDestino; ClaveContableInfo claveContableOrigen; CostoInfo costo; CuentaSAPInfo cuentaSapDestino; CuentaSAPInfo cuentaSapOrigen; DatosPolizaInfo datos; PolizaInfo polizaSalida; int cabezasRecibidas = interfaceSalidaTraspaso.ListaInterfaceSalidaTraspasoDetalle.Sum(cab => cab.Cabezas); decimal pesoOrigen = interfaceSalidaTraspaso.PesoBruto - interfaceSalidaTraspaso.PesoTara; AnimalCostoInfo animalCosto; for (var indexCostos = 0; indexCostos < costosAnimalesTraspasados.Count; indexCostos++) { animalCosto = costosAnimalesTraspasados[indexCostos]; costo = costos.FirstOrDefault( id => id.CostoID == animalCosto.CostoID); claveContableDestino = ObtenerCuentaInventario(costo , organizacionOrigen.OrganizacionID , TipoOrganizacion.Ganadera.GetHashCode ()); claveContableOrigen = ObtenerCuentaInventario(costo , organizacionDestino.OrganizacionID , TipoPoliza.SalidaGanado); cuentaSapDestino = cuentasSap.FirstOrDefault( clave => clave.CuentaSAP.Equals(claveContableDestino.Valor)); if (cuentaSapDestino == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "NO SE CUENTA CON CONFIGURACIÓN PARA CUENTA DE INVENTARIO", claveContableDestino.Valor)); } cuentaSapOrigen = cuentasSap.FirstOrDefault( clave => clave.CuentaSAP.Equals(claveContableOrigen.Valor)); if (cuentaSapOrigen == null) { throw new ExcepcionServicio(string.Format("{0} {1}", "NO SE CUENTA CON CONFIGURACIÓN PARA CUENTA DE TRANSITO", claveContableOrigen.Valor)); } datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaEnvio, Folio = folioTraspaso.ToString(), CabezasRecibidas = cabezasRecibidas.ToString(), NumeroDocumento = folioTraspaso.ToString(), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? (animalCosto.Importe * -1).ToString("F2") : animalCosto.Importe.ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(renglon++), Cabezas = Convert.ToString(cabezasRecibidas), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio.ToString(), DescripcionCosto = cuentaSapOrigen.Descripcion, Cuenta = cuentaSapOrigen.CuentaSAP, PesoOrigen = pesoOrigen, Division = divisionOrigen, ComplementoRef1 = COMPLEMENTO_REF1, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} ,{2} {3}, {4} {5}", prefijoConcepto, folioTraspaso, cabezasRecibidas, DESCRIPCION_MOVIMIENTO, pesoOrigen.ToString("N0"), UNIDAD_MOVIMIENTO), Sociedad = organizacionDestino.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacionDestino.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaTraspaso.Add(polizaSalida); datos = new DatosPolizaInfo { NumeroReferencia = numeroDocumento, FechaEntrada = fechaEnvio, Folio = folioTraspaso.ToString(), CabezasRecibidas = cabezasRecibidas.ToString(), NumeroDocumento = folioTraspaso.ToString(), ClaseDocumento = postFijoRef3, Importe = string.Format("{0}", Cancelacion ? animalCosto.Importe.ToString("F2") : (animalCosto.Importe * -1).ToString("F2")), IndicadorImpuesto = String.Empty, Renglon = Convert.ToString(renglon++), Cabezas = Convert.ToString(cabezasRecibidas), ImporteIva = "0", Ref3 = ref3.ToString(), ArchivoFolio = archivoFolio.ToString(), DescripcionCosto = cuentaSapDestino.Descripcion, Cuenta = cuentaSapDestino.CuentaSAP, PesoOrigen = pesoOrigen, Division = divisionOrigen, ComplementoRef1 = COMPLEMENTO_REF1, TipoDocumento = textoDocumento, Concepto = String.Format("{0}-{1} ,{2} {3}, {4} {5}", prefijoConcepto, folioTraspaso, cabezasRecibidas, DESCRIPCION_MOVIMIENTO, pesoOrigen.ToString("N0"), UNIDAD_MOVIMIENTO), Sociedad = organizacionDestino.Sociedad, Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacionDestino.Sociedad), }; polizaSalida = GeneraRegistroPoliza(datos); polizasSalidaTraspaso.Add(polizaSalida); } } } } } if (costosGanadoTransferido.Any()) { var interfaceSalidaTraspasoCostoBL = new InterfaceSalidaTraspasoCostoBL(); interfaceSalidaTraspasoCostoBL.Guardar(costosGanadoTransferido); } } return(polizasSalidaTraspaso); }
/// <summary> /// Recalcula los importes de Canal, Piel y Viscera /// </summary> /// <param name="polizasSacrificioSukarne"></param> /// <param name="polizasSacrificioTraspaso"> </param> /// <param name="lotesSacrificioFolios"></param> /// <param name="interfaceSalidaTraspaso"></param> /// <param name="cancelacion"> </param> private void GenerarImportesSacrificioLucero(IList <PolizaInfo> polizasSacrificioSukarne , IList <PolizaInfo> polizasSacrificioTraspaso , List <PolizaSacrificioModel> lotesSacrificioFolios , List <InterfaceSalidaTraspasoInfo> interfaceSalidaTraspaso , bool cancelacion) { polizasSacrificioTraspaso = polizasSacrificioTraspaso.Where( imp => imp.Importe.IndexOf("-", StringComparison.CurrentCultureIgnoreCase) < 0).ToList(); if (polizasSacrificioTraspaso.Any()) { int folioTraspaso = polizasSacrificioTraspaso.Select(folio => Convert.ToInt32(folio.TextoAsignado)).FirstOrDefault(); InterfaceSalidaTraspasoInfo traspaso = interfaceSalidaTraspaso.FirstOrDefault(id => id.FolioTraspaso == folioTraspaso); if (traspaso != null) { var precioPACBL = new PrecioPACDAL(); PrecioPACInfo precioPac = precioPACBL.ObtenerPrecioPACActivo(traspaso.OrganizacionDestino.OrganizacionID); if (precioPac == null) { precioPac = new PrecioPACInfo(); } decimal importe = polizasSacrificioTraspaso.Sum(imp => Convert.ToDecimal(imp.Importe)); traspaso.ListaInterfaceSalidaTraspasoDetalle .ForEach(datos => { PolizaSacrificioModel polizaSacrificioModel = lotesSacrificioFolios.FirstOrDefault( detId => detId.InterfaceSalidaTraspasoDetalleID == datos.InterfaceSalidaTraspasoDetalleID); if (polizaSacrificioModel != null) { List <PolizaInfo> polizasAModificar = polizasSacrificioSukarne.Where( folio => folio.Concepto .IndexOf(string.Format("{0}-{1}", polizaSacrificioModel.Serie, polizaSacrificioModel.Folio), StringComparison.CurrentCultureIgnoreCase) >= 0). OrderBy(linea => Convert.ToInt32(linea.NumeroLinea)).ToList(); if (polizasAModificar.Any()) { decimal importeTotal = importe + (datos.Cabezas * 320); decimal importeCanal = 0; decimal importePiel = polizaSacrificioModel.PesoPiel * precioPac.Precio; decimal importeViscera = datos.Cabezas * precioPac.PrecioViscera; const int CANAL = 1; const int PIEL = 2; const int VISCERA = 3; polizasAModificar.ForEach(poliza => { switch (Convert.ToInt32(poliza.NumeroLinea)) { case CANAL: importeCanal = importeTotal - (importePiel + importeViscera); poliza.Importe = string.Format("{0}{1:F2}", cancelacion ? string.Empty : "-", importeCanal); polizaSacrificioModel. ImporteCanal = importeCanal; break; case PIEL: poliza.Importe = string.Format("{0}{1:F2}", cancelacion ? string.Empty : "-", importePiel); polizaSacrificioModel. ImportePiel = importePiel; break; case VISCERA: poliza.Importe = string.Format("{0}{1:F2}", cancelacion ? string.Empty : "-", importeViscera); polizaSacrificioModel. ImporteViscera = importeViscera; break; case 4: poliza.Importe = string.Format("{0}{1:F2}", cancelacion ? "-" : string.Empty, importeCanal + importePiel + importeViscera); break; } }); } } }); } } }