/// <summary> /// Genera la factura para las salidas de ganado en transito venta /// </summary> /// <param name="folio">el folio que se acava de registrar actualmente</param> /// <param name="organizacionId">Organizacion del usuario</param> /// <param name="activo">El SP valida que activo (Venta) sea igual a true</param> /// <returns></returns> internal object SalidaGanadoTransito_ObtenerDatosFactura(int folio, int organizacionId, bool activo) { FacturaInfo factura; try { Logger.Info(); var loteSacrificioDal = new SalidaGanadoEnTransitoDAL(); factura = loteSacrificioDal.SalidaGanadoTransito_ObtenerDatosFactura(folio, activo); if (factura != null) { //Mandar crear la factura var facturaSalidaVentaTransito = ObtenerDatosDeFacturacionSalidaVentaTransito(factura, organizacionId); GenerarFactura(facturaSalidaVentaTransito, organizacionId); } } catch (ExcepcionServicio) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return factura; }
/// <summary> /// consulta los datos faltantes para la generacion de la poliza de salida por muerte en transito /// </summary> /// <param name="input">Salida de ganado en transito al que le buscaran los datos faltantes para la generacion de la poliza</param> /// <returns>Regresa los datos faltantes para la poliza de salida de ganado en transito por muerte</returns> DatosPolizaSalidaGanadoTransitoInfo ObtenerDatosPolizaSalidaPorMuerte(SalidaGanadoEnTransitoInfo input) { try { var salida = new SalidaGanadoEnTransitoDAL(); var result = salida.ObtenerDatosPolizaSalidaPorMuerte(input); return(result); } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Genera los parametros para la consulta que trae los datos faltantes para la generacion de la poliza /// </summary> /// <param name="input">Objeto que lleva el folio y muerte(activo)</param> /// <returns></returns> DatosPolizaSalidaGanadoTransitoInfo obtenerDatosPolizaSalidaPorVenta(SalidaGanadoEnTransitoInfo input) { try { var salida = new SalidaGanadoEnTransitoDAL(); var result = salida.ObtenerDatosPolizaSalidaPorMuerte(input); return(result); } catch (Exception ex) { Logger.Error(ex); return(new DatosPolizaSalidaGanadoTransitoInfo()); } }
/// <summary> /// Registra una salida de ganado en transito, genera la poliza y factura correspondiente e imprime el archivo de poliza en formato PDF /// </summary> /// <param name="input">salida de ganado en transito que se registrara</param> /// <param name="registroExitoso">indica si se completo el registro de la salida de ganado en transito</param> /// <returns>Regresa los datos que conformaran el archivo impreso en PDF</returns> public MemoryStream GuardarSalida(SalidaGanadoEnTransitoInfo input, out bool registroExitoso) { try { var salida = new SalidaGanadoEnTransitoDAL(); var ms = new MemoryStream(); registroExitoso = false; using (var transaction = new TransactionScope()) //agrupa el proceso siguiente como una sola operacion { salida.GuardarSalida(ref input); //registrar la salida de ganado en transito y actualiza el folio generado para la salida salida.ActualizarEntradas(input); //actualiza las entradas de ganado en transito, y del lote correspondiente if (input.Muerte) // si es salida de ganado en transito por muerte { var polizaSalida = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaMuerteEnTransito); var polizaDal = new PolizaDAL(); var polizaSalidaMuerteTransito = polizaSalida.GeneraPoliza(input); //genera el XML de la poliza //genera el XML de la poliza de salida de ganado por muerte input.PolizaID = polizaDal.Crear(polizaSalidaMuerteTransito, TipoPoliza.SalidaMuerteEnTransito); //almacena la poliza generada en la base de datos ms = polizaSalida.ImprimePoliza(input, polizaSalidaMuerteTransito); //genera el archivo en formato PDF de la poliza generada registroExitoso = true; //indica que se completo la operacion exitosamente } else if (input.Venta) //en caso de ser una salida de ganado en transito por venta { var polizaSalida = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.SalidaVentaEnTransito); var polizaDal = new PolizaDAL(); var poliza = polizaSalida.GeneraPoliza(input); //genera el XML de la poliza de salida de ganado por venta input.PolizaID = polizaDal.Crear(poliza, TipoPoliza.SalidaVentaEnTransito); //almacena la poliza generada en la base de datos ms = polizaSalida.ImprimePoliza(input, poliza); //genera el archivo en formato PDF de la poliza generada var generarFactura = new FacturaBL(); generarFactura.SalidaGanadoTransito_ObtenerDatosFactura(input.Folio, input.OrganizacionID, true); //genera la factura de la salida de ganado en transito registroExitoso = true; //indica que se completo la operacion exitosamente } salida.AsignarPolizaRegistrada(input); //asigna la poliza generada a la salida de ganado en transito registrada transaction.Complete(); //da por concluido el proceso de Salida de ganado en transito por venta o muerte return(ms); //regresa los datos del archivo PDF que se imprimiran } } catch (Exception ex) { Logger.Error(ex); registroExitoso = false; throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }