/// <summary> /// Termina la salida del producto /// </summary> /// <param name="salida"></param> /// <returns></returns> internal MemoryStream TerminarSalidaProducto(SalidaProductoInfo salida) { try { Logger.Info(); bool generaFactura = salida.GeneraFactura; MemoryStream resultado = null; var almacenBl = new AlmacenBL(); var almacenMovimientoDetalleDAL = new AlmacenMovimientoDetalleDAL(); var almacenMovimiento = new AlmacenMovimientoInfo(); var almacenInventarioLoteBl = new AlmacenInventarioLoteBL(); var almacenInventarioBl = new AlmacenInventarioBL(); var salidaProductoDal = new SalidaProductoDAL(); PolizaAbstract poliza = null; IList <PolizaInfo> polizas = null; using (var transaction = new TransactionScope()) { almacenMovimiento.AlmacenID = salida.Almacen.AlmacenID; almacenMovimiento.TipoMovimientoID = salida.TipoMovimiento.TipoMovimientoID; almacenMovimiento.UsuarioCreacionID = salida.UsuarioModificacionId; almacenMovimiento.Status = (int)EstatusInventario.Aplicado; AlmacenMovimientoInfo almacenMovimientoGenerado = almacenBl.GuardarAlmacenMovimiento(almacenMovimiento); if (almacenMovimientoGenerado != null) { AlmacenInventarioLoteInfo almacenInventarioLote = almacenInventarioLoteBl.ObtenerAlmacenInventarioLotePorId( salida.AlmacenInventarioLote.AlmacenInventarioLoteId); var listaAlmacenInventarioDetalle = new List <AlmacenMovimientoDetalle>(); var movimientoDetalle = new AlmacenMovimientoDetalle { AlmacenMovimientoID = almacenMovimientoGenerado.AlmacenMovimientoID, AlmacenInventarioLoteId = salida.AlmacenInventarioLote.AlmacenInventarioLoteId, Precio = almacenInventarioLote.PrecioPromedio, ProductoID = salida.Producto.ProductoId, Cantidad = salida.PesoBruto - salida.PesoTara, Piezas = salida.Piezas, Importe = (salida.PesoBruto - salida.PesoTara) * almacenInventarioLote.PrecioPromedio, UsuarioCreacionID = salida.UsuarioModificacionId }; listaAlmacenInventarioDetalle.Add(movimientoDetalle); almacenMovimientoDetalleDAL.GuardarAlmacenMovimientoDetalle(listaAlmacenInventarioDetalle, almacenMovimientoGenerado. AlmacenMovimientoID); if (almacenInventarioLote != null) { almacenInventarioLote.Cantidad = almacenInventarioLote.Cantidad - (salida.PesoBruto - salida.PesoTara); almacenInventarioLote.Importe = almacenInventarioLote.PrecioPromedio * almacenInventarioLote.Cantidad; almacenInventarioLote.UsuarioModificacionId = salida.UsuarioModificacionId; almacenInventarioLoteBl.Actualizar(almacenInventarioLote); AlmacenInfo almacen = almacenBl.ObtenerPorID(almacenMovimiento.AlmacenID); List <AlmacenInventarioInfo> listaAlmacenlmacenInventario = almacenInventarioBl.ObtienePorAlmacenId(almacen); if (listaAlmacenlmacenInventario != null) { AlmacenInventarioInfo inventarioProducto = listaAlmacenlmacenInventario.FirstOrDefault( registro => registro.ProductoID == salida.Producto.ProductoId); if (inventarioProducto != null) { inventarioProducto.Cantidad = inventarioProducto.Cantidad - (salida.PesoBruto - salida.PesoTara); inventarioProducto.Importe = (inventarioProducto.PrecioPromedio * inventarioProducto.Cantidad); //Actualiza inventario inventarioProducto.UsuarioModificacionID = salida.UsuarioModificacionId; inventarioProducto.ProductoID = salida.Producto.ProductoId; inventarioProducto.AlmacenID = almacen.AlmacenID; almacenInventarioBl.ActualizarPorProductoId(inventarioProducto); salida.GeneraFactura = generaFactura; salidaProductoDal.TerminarSalidaProducto(salida, almacenMovimientoGenerado); #region POLIZA poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza( TipoPoliza.SalidaVentaProducto); salida.Importe = (salida.PesoBruto - salida.PesoTara) * salida.Precio; salida = ObtenerFolioPorReimpresion(salida); polizas = poliza.GeneraPoliza(salida); if (polizas != null) { var polizaBL = new PolizaBL(); polizas.ToList().ForEach(datos => { datos.OrganizacionID = salida.Organizacion.OrganizacionID; datos.UsuarioCreacionID = salida.UsuarioCreacionId; datos.ArchivoEnviadoServidor = 1; }); polizaBL.GuardarServicioPI(polizas, TipoPoliza.SalidaVentaProducto); if (salida.Almacen == null) { salida.Almacen = new AlmacenInfo(); } salida.Almacen.Organizacion = new OrganizacionInfo { OrganizacionID = salida.Organizacion.OrganizacionID }; resultado = poliza.ImprimePoliza(salida, polizas); } #endregion POLIZA if (generaFactura) { #region FACTURA if (salida.TipoMovimiento.TipoMovimientoID == TipoMovimiento.ProductoSalidaVenta.GetHashCode()) { //Genera el xml y lo guarda en la ruta especificada en la configuración var facturaBl = new FacturaBL(); facturaBl.GenerarDatosFacturaVentaDeMateriaPrima(salida); } #endregion } transaction.Complete(); } else { throw new ExcepcionDesconocida( Properties.ResourceServices.InventarioNormal_ErrorMovimientos); } } else { throw new ExcepcionDesconocida( Properties.ResourceServices.InventarioNormal_ErrorMovimientos); } } else { throw new ExcepcionDesconocida( Properties.ResourceServices.InventarioNormal_ErrorMovimientos); } } else { throw new ExcepcionDesconocida( Properties.ResourceServices.InventarioNormal_ErrorMovimientos); } } return(resultado); } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (ExcepcionDesconocida) { throw; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo que le da salida por venta al ganado /// </summary> /// <param name="salidaIndividual"></param> /// <returns></returns> internal MemoryStream GuardarSalidaIndividualGanadoVenta(SalidaIndividualInfo salidaIndividual) { MemoryStream retorno = null; try { PolizaAbstract poliza; IList <PolizaInfo> polizaSalidaVenta; TicketInfo Ticket = new TicketInfo(); Ticket.FolioTicket = salidaIndividual.FolioTicket; Ticket.Organizacion = salidaIndividual.Organizacion; Ticket.TipoVenta = salidaIndividual.TipoVenta; var ventaGanadoBL = new VentaGanadoBL(); VentaGanadoInfo salidaPorVentaGanado = ventaGanadoBL.ObtenerVentaGanadoPorTicket(Ticket); var loteBL = new LoteBL(); LoteInfo lote = loteBL.ObtenerPorID(salidaPorVentaGanado.LoteID); lote.Cabezas -= salidaIndividual.NumeroDeCabezas; AnimalBL animalBl = new AnimalBL(); using (var scope = new TransactionScope()) { Logger.Info(); var salidaIndividualDAL = new SalidaIndividualDAL(); VentaGanadoDetalleBL ventaGanadoDetalleBl = new VentaGanadoDetalleBL(); List <VentaGanadoDetalleInfo> listaVentaGanadoDetalle = ventaGanadoDetalleBl.ObtenerVentaGanadoPorTicket(salidaPorVentaGanado.VentaGanadoID); List <AnimalCostoInfo> animalCosto = new List <AnimalCostoInfo>(); AnimalCostoBL animalCostoBl = new AnimalCostoBL(); List <AnimalInfo> animalesConsulta = new List <AnimalInfo>(); List <AnimalInfo> animalesProcesar = new List <AnimalInfo>(); foreach (VentaGanadoDetalleInfo ventaGanado in listaVentaGanadoDetalle) { animalesConsulta = new List <AnimalInfo>(); ventaGanado.Animal = animalBl.ObtenerAnimalPorArete(ventaGanado.Arete, Ticket.Organizacion); if (ventaGanado.Animal == null) { ventaGanado.Animal = animalBl.ObtenerAnimalPorAreteTestigo(ventaGanado.AreteMetalico, Ticket.Organizacion); } animalesConsulta.Add(ventaGanado.Animal); animalCosto = animalCostoBl.ObtenerCostosAnimal(animalesConsulta); if (!animalCosto.Any(registro => registro.CostoID == Costo.CostoGanado.GetHashCode())) { animalesProcesar.Add(ventaGanado.Animal); } } if (animalesProcesar != null && animalesProcesar.Count > 0) { animalBl.ProcesoGenerarCostos(animalesProcesar); } salidaIndividualDAL.GuardarSalidaIndividualGanadoVenta(salidaIndividual); salidaIndividualDAL.GuardarCostosHistoricos(salidaIndividual); salidaIndividualDAL.GuardarConsumoHistoricos(salidaIndividual); salidaIndividualDAL.GuardarAnimalHistoricos(salidaIndividual); var filtroActualizaCabezas = new FiltroActualizarCabezasLote { LoteIDOrigen = lote.LoteID, LoteIDDestino = 0, CabezasProcesadas = salidaIndividual.NumeroDeCabezas, UsuarioModificacionID = salidaIndividual.Usuario }; loteBL.ActualizarCabezasProcesadas(filtroActualizaCabezas); //loteBL.ActualizaNoCabezasEnLote(lote, lote); #region Poliza List <ContenedorVentaGanado> ventasGanado = ventaGanadoBL.ObtenerVentaGanadoPorTicketPoliza(Ticket.FolioTicket, Ticket.Organizacion); if (ventasGanado != null && ventasGanado.Any()) { poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaVenta); polizaSalidaVenta = poliza.GeneraPoliza(ventasGanado); if (polizaSalidaVenta != null && polizaSalidaVenta.Any()) { polizaSalidaVenta.ToList().ForEach( org => { org.OrganizacionID = Ticket.Organizacion; org.UsuarioCreacionID = salidaIndividual.Usuario; org.ArchivoEnviadoServidor = 1; }); retorno = poliza.ImprimePoliza(ventasGanado, polizaSalidaVenta); var polizaBL = new PolizaBL(); polizaBL.GuardarServicioPI(polizaSalidaVenta, TipoPoliza.SalidaVenta); } } // Genera el xml y lo guarda en la ruta especificada en la configuración var facturaBl = new FacturaBL(); facturaBl.GenerarDatosFacturaVentaDeGanado(Ticket.FolioTicket, Ticket.Organizacion); #endregion Poliza scope.Complete(); } return(retorno); } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Metodo que da salida por venta al ganado intensivo cuano se selcciona tipoventa Externo /// </summary> /// <param name="salidaIndividual"></param> /// <returns></returns> internal MemoryStream GuardarSalidaGanadoVentaIntensiva(SalidaIndividualInfo salidaIndividual) { MemoryStream retorno = null; try { PolizaAbstract poliza; IList <PolizaInfo> polizaSalidaVenta; TicketInfo Ticket = new TicketInfo(); CorralInfo corralInfo = new CorralInfo(); CorralBL corralB = new CorralBL(); GanadoIntensivoBL salidaGanadoCosto = new GanadoIntensivoBL(); GanadoIntensivoInfo salidaGanadoInfo = new GanadoIntensivoInfo(); corralInfo = corralB.ObtenerCorralActivoPorCodigo(salidaIndividual.Organizacion, salidaIndividual.Corral); corralInfo.Organizacion = new OrganizacionInfo(); corralInfo.Organizacion.OrganizacionID = salidaIndividual.Organizacion; salidaGanadoInfo = salidaGanadoCosto.ObtenerMuerteGanadoIntensivo(corralInfo); salidaGanadoInfo.Organizacion = new OrganizacionInfo(); salidaGanadoInfo.Organizacion.OrganizacionID = salidaIndividual.Organizacion; salidaGanadoInfo.Observaciones = ""; Ticket.FolioTicket = salidaIndividual.FolioTicket; Ticket.Organizacion = salidaIndividual.Organizacion; var ventaGanadoBL = new VentaGanadoBL(); VentaGanadoInfo salidaPorVentaGanado = ventaGanadoBL.ObtenerVentaGanadoPorTicket(Ticket); var loteBL = new LoteBL(); CorralBL corralBl = new CorralBL(); LoteInfo lote = loteBL.ObtenerPorID(salidaPorVentaGanado.LoteID); int iCabezasTotalLote = lote.Cabezas; lote.Cabezas -= salidaIndividual.NumeroDeCabezas; //lote.Corral = corralBl.ObtenerCorralPorLoteID(lote.LoteID, salidaIndividual.Organizacion); //lote.Corral = corralBl.ObtenerCorralPorCodigo() using (var scope = new TransactionScope()) { Logger.Info(); var salidaIndividualDAL = new SalidaIndividualDAL(); var filtroActualizaCabezas = new FiltroActualizarCabezasLote { LoteIDOrigen = lote.LoteID, LoteIDDestino = 0, CabezasProcesadas = salidaIndividual.NumeroDeCabezas, UsuarioModificacionID = salidaIndividual.Usuario }; loteBL.ActualizarCabezasProcesadas(filtroActualizaCabezas); salidaGanadoInfo.ListaGanadoIntensivoCosto = new List <GanadoIntensivoCostoInfo>(); foreach ( var entradaCosteo in salidaGanadoInfo.EntradaGanadoCosteo.ListaCostoEntrada.OrderBy(id => id.Costo.CostoID)) { var costoInt = new GanadoIntensivoCostoInfo(); costoInt.Costos = new CostoInfo(); costoInt.Costos = entradaCosteo.Costo; costoInt.Costos.ImporteCosto = (entradaCosteo.Importe / salidaGanadoInfo.EntradaGanado.CabezasRecibidas) * salidaIndividual.NumeroDeCabezas; costoInt.Importe = costoInt.Costos.ImporteCosto; salidaGanadoInfo.ListaGanadoIntensivoCosto.Add(costoInt); } salidaGanadoInfo.TipoMovimientoID = TipoMovimiento.SalidaVentaIntensivo; //salidaIndividualDAL.GuardarSalidaIndividualGanadoVenta(salidaIndividual); salidaGanadoInfo.TotalCabezas = salidaIndividual.NumeroDeCabezas; salidaGanadoInfo.FolioTicket = salidaIndividual.FolioTicket; salidaGanadoInfo.TipoFolio = TipoFolio.VentaGanadoIntensivo; salidaGanadoInfo.PesoBruto = salidaIndividual.PesoBruto; salidaGanadoInfo.UsuarioCreacionID = salidaIndividual.Usuario; salidaGanadoInfo.Organizacion.OrganizacionID = salidaIndividual.Organizacion; salidaGanadoInfo.CabezasText = salidaIndividual.NumeroDeCabezas.ToString(); salidaGanadoCosto.Guardar(salidaGanadoInfo); #region Poliza List <ContenedorVentaGanado> ventasGanado = ventaGanadoBL.ObtenerVentaGanadoIntensivoPorTicketPoliza(Ticket); if (ventasGanado != null && ventasGanado.Any()) { poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaVentaIntensiva); for (int i = 0; i < ventasGanado.Count; i++) { ventasGanado[i].EntradaGandoId = salidaGanadoInfo.EntradaGanado.EntradaGanadoID; ventasGanado[i].OrganizacionId = Ticket.Organizacion; ventasGanado[i].Lote = lote; } polizaSalidaVenta = poliza.GeneraPoliza(ventasGanado); if (polizaSalidaVenta != null && polizaSalidaVenta.Any()) { polizaSalidaVenta.ToList().ForEach( org => { org.OrganizacionID = Ticket.Organizacion; org.UsuarioCreacionID = salidaIndividual.Usuario; org.ArchivoEnviadoServidor = 1; }); retorno = poliza.ImprimePoliza(ventasGanado, polizaSalidaVenta); var polizaBL = new PolizaBL(); polizaBL.GuardarServicioPI(polizaSalidaVenta, TipoPoliza.SalidaVentaIntensiva); } } // Genera el xml y lo guarda en la ruta especificada en la configuración var facturaBl = new FacturaBL(); facturaBl.GenerarDatosFacturaVentaDeGanadoIntensivo(Ticket.FolioTicket, Ticket.Organizacion); #endregion Poliza scope.Complete(); } return(retorno); } catch (ExcepcionServicio ex) { Logger.Error(ex); throw; } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
internal MemoryStream Guardar(MuertesEnTransitoInfo muerteEnTransito, List <AnimalInfo> animales) { MemoryStream retorno = null; try { Logger.Info(); PolizaAbstract poliza; IList <PolizaInfo> polizaMuerteEnTransito; var entradaGanadoMuerteLista = new List <EntradaGanadoMuerteInfo>(); using (var transaction = new TransactionScope()) { var fecha = DateTime.Now; int organizacionID = muerteEnTransito.OrganizacionID; int usuarioCreacionID = muerteEnTransito.UsuarioCreacionID; int pesoAnimal = 0; int corralID = 0; int loteID = 0; var datosInterface = false; List <InterfaceSalidaAnimalInfo> interfaceSalidaAnimal = null; var entradaGanadoBL = new EntradaGanadoBL(); EntradaGanadoInfo entradaGanado = entradaGanadoBL.ObtenerPorID(muerteEnTransito.EntradaGanadoID); if (entradaGanado != null) { loteID = entradaGanado.LoteID; corralID = entradaGanado.CorralID; if (entradaGanado.FolioOrigen > 0) { var interfaceSalidaBL = new InterfaceSalidaAnimalBL(); interfaceSalidaAnimal = interfaceSalidaBL.ObtenerInterfazSalidaAnimal(entradaGanado.FolioOrigen, entradaGanado.OrganizacionOrigenID); if (interfaceSalidaAnimal == null || interfaceSalidaAnimal.Count <= 0) { fecha = entradaGanado.FechaEntrada; pesoAnimal = Convert.ToInt32((entradaGanado.PesoBruto - entradaGanado.PesoTara) / entradaGanado.CabezasRecibidas); } else { datosInterface = true; } } else { pesoAnimal = Convert.ToInt32((entradaGanado.PesoBruto - entradaGanado.PesoTara) / entradaGanado.CabezasRecibidas); } } // Generamos el Folio FolioBL folioBL = new FolioBL(); var folioMuerte = folioBL.ObtenerFolio(organizacionID, TipoFolio.MuertesEnTransito); foreach (var animal in animales) { if (datosInterface) { pesoAnimal = interfaceSalidaAnimal.Where( are => are.Arete.Equals(animal.Arete)).Select( peso => Convert.ToInt32(peso.PesoCompra)).FirstOrDefault(); } if (datosInterface) { fecha = interfaceSalidaAnimal.Where(arete => arete.Arete.Equals(animal.Arete)).Select( fechaItz => fechaItz.FechaCompra).FirstOrDefault(); } if (fecha == new DateTime(1, 1, 1)) { fecha = DateTime.Now; } animal.OrganizacionIDEntrada = organizacionID; animal.FolioEntrada = muerteEnTransito.FolioEntrada; animal.UsuarioCreacionID = usuarioCreacionID; animal.ClasificacionGanadoID = 1; animal.CalidadGanadoID = 1; animal.TipoGanadoID = 1; animal.FechaCompra = fecha; animal.PesoCompra = pesoAnimal; animal.Activo = false; } //Guardamos los Animales var animalBL = new AnimalBL(); animalBL.GuardarAnimal(animales); //Obtenemos los animales almacenados con su animales = animalBL.ObtenerPorArete(animales); foreach (AnimalInfo animal in animales) { animal.UsuarioCreacionID = usuarioCreacionID; } //Genera los costos por animal animales = animalBL.ProcesoGenerarCostos(animales); foreach (AnimalInfo animal in animales) { var entradaGanadoMuerte = new EntradaGanadoMuerteInfo { EntradaGanado = new EntradaGanadoInfo { EntradaGanadoID = muerteEnTransito.EntradaGanadoID, }, Animal = new AnimalInfo { Arete = animal.Arete }, FolioMuerte = folioMuerte, Activo = EstatusEnum.Activo, UsuarioCreacionID = usuarioCreacionID, Peso = animal.PesoCompra, EntradaGanadMuerteDetalle = new List <EntradaGanadoMuerteDetalleInfo>(), ProveedorFletes = new ProveedorInfo() { CodigoSAP = muerteEnTransito.CodigoProveedor }, Cliente = new ClienteInfo() { CodigoSAP = muerteEnTransito.Cliente.CodigoSAP, Descripcion = muerteEnTransito.Cliente.Descripcion }, OrganizacionDestinoID = entradaGanado.OrganizacionID }; if (animal.ListaCostosAnimal != null) { entradaGanadoMuerte.EntradaGanadMuerteDetalle = animal.ListaCostosAnimal.Select(im => new EntradaGanadoMuerteDetalleInfo { Costo = new CostoInfo { CostoID = im.CostoID }, Importe = im.Importe, EntradaGanadoMuerte = entradaGanadoMuerte }).ToList(); } entradaGanadoMuerteLista.Add(entradaGanadoMuerte); } if (interfaceSalidaAnimal != null && interfaceSalidaAnimal.Count > 0 && animales != null && animales.Count > 0) { var interfaceSalidaBL = new InterfaceSalidaAnimalBL(); foreach (AnimalInfo animal in animales) { InterfaceSalidaAnimalInfo interfaceSalidaAnimalIndividual = interfaceSalidaAnimal.FirstOrDefault(animalInfo => animalInfo.Arete.Equals(animal.Arete)); interfaceSalidaBL.GuardarAnimalID(interfaceSalidaAnimalIndividual, animal.AnimalID); } } //Asignamos el AnimalID en la lista de muertes ante sde guardar. foreach (EntradaGanadoMuerteInfo muerte in entradaGanadoMuerteLista) { muerte.Animal.AnimalID = animales.Where(animal => animal.Arete.Equals(muerte.Animal.Arete)) .Select(animal => animal.AnimalID).FirstOrDefault(); muerte.Peso = animales.Where(animal => animal.Arete.Equals(muerte.Animal.Arete)) .Select(animal => animal.PesoCompra).FirstOrDefault(); } //Guardamos las muertes en transito var muertesEnTransitoDal = new MuertesEnTransitoDAL(); muertesEnTransitoDal.Guardar(entradaGanadoMuerteLista, muerteEnTransito.Cliente); //Creamos los movimientos para el animal if (animales != null && animales.Any()) { fecha = DateTime.Now; var animalMovimientoBL = new AnimalMovimientoBL(); List <AnimalMovimientoInfo> movimientosAnimal = animales.Select(ani => new AnimalMovimientoInfo { AnimalID = ani.AnimalID, Activo = EstatusEnum.Activo, CorralID = corralID, LoteID = loteID, FechaMovimiento = fecha, OrganizacionID = organizacionID, TipoMovimientoID = TipoMovimiento.MuerteTransito.GetHashCode(), OperadorID = 1, TrampaID = 1, Peso = ani.PesoCompra, UsuarioCreacionID = usuarioCreacionID, }).ToList(); animalMovimientoBL.GuardarAnimalMovimientoXML(movimientosAnimal); } //Afectamos el lote correspondiente. var loteBl = new LoteBL(); var loteInfo = loteBl.ObtenerPorID(muerteEnTransito.LoteID); loteInfo.UsuarioModificacionID = muerteEnTransito.UsuarioCreacionID; loteInfo.Cabezas -= muerteEnTransito.MuertesTransito; var filtro = new FiltroActualizarCabezasLote { CabezasProcesadas = muerteEnTransito.MuertesTransito, LoteIDDestino = 0, LoteIDOrigen = loteInfo.LoteID, UsuarioModificacionID = usuarioCreacionID }; var cabezasActualizadas = loteBl.ActualizarCabezasProcesadas(filtro); //Executamos el SP CorteGanado_CierrePartidaPesoOrigenLLegada(Antes-->CorteGanado_PesoCompraDirecta), si se inactiva el lote. if (cabezasActualizadas.CabezasOrigen <= 0) { //muertesEnTransitoDal.CorteGanado_PesoCompraDirecta(muerteEnTransito.OrganizacionID, muerteEnTransito.CorralID, muerteEnTransito.LoteID); var corteGanadoBl = new CorteGanadoBL(); corteGanadoBl.ObtenerPesosOrigenLlegada(muerteEnTransito.OrganizacionID, muerteEnTransito.CorralID, muerteEnTransito.LoteID); } #region Poliza //VentaGanadoBL ventaGanadoBL = new VentaGanadoBL(); //List<EntradaGanadoMuerteInfo> ventasGanado = ventaGanadoBL.ObtenerVentaGanadoPorTicketPoliza(folio, organizacionID); //if (ventasGanado != null && ventasGanado.Any()) if (entradaGanadoMuerteLista != null && entradaGanadoMuerteLista.Any()) { poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.PolizaMuerteTransito); polizaMuerteEnTransito = poliza.GeneraPoliza(entradaGanadoMuerteLista); if (polizaMuerteEnTransito != null && polizaMuerteEnTransito.Any()) { polizaMuerteEnTransito.ToList().ForEach( org => { org.OrganizacionID = organizacionID; org.UsuarioCreacionID = usuarioCreacionID; org.ArchivoEnviadoServidor = 1; }); entradaGanadoMuerteLista.ToList().ForEach(org => { org.EntradaGanado.Lote = entradaGanado.Lote; org.EntradaGanado.CodigoCorral = entradaGanado.CodigoCorral; }); retorno = poliza.ImprimePoliza(entradaGanadoMuerteLista, polizaMuerteEnTransito); var polizaBL = new PolizaBL(); polizaBL.GuardarServicioPI(polizaMuerteEnTransito, TipoPoliza.PolizaMuerteTransito); } } // Genera el xml y lo guarda en la ruta especificada en la configuración var facturaBl = new FacturaBL(); facturaBl.GenerarDatosFacturaMuertesEnTransito(folioMuerte, organizacionID); #endregion Poliza animalBL.EnviarAHistorico(animales); transaction.Complete(); } return(retorno); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }