Example #1
0
 /// <summary>
 /// Valida las cabezas ya sacrificadas
 /// </summary>
 /// <param name="interfaceSalidaTraspaso"></param>
 /// <param name="lotesSacrificioRegistrados"></param>
 private void ValidaCabezasSacrificadas(List <InterfaceSalidaTraspasoInfo> interfaceSalidaTraspaso, List <PolizaSacrificioModel> lotesSacrificioRegistrados)
 {
     interfaceSalidaTraspaso.ForEach(datos => datos.ListaInterfaceSalidaTraspasoDetalle
                                     .ForEach(det =>
     {
         PolizaSacrificioModel polizaSacrificioModel = lotesSacrificioRegistrados.FirstOrDefault(cab =>
                                                                                                 cab.InterfaceSalidaTraspasoDetalleID == det.InterfaceSalidaTraspasoDetalleID);
         if (polizaSacrificioModel != null)
         {
             det.CabezasSacrificadas = polizaSacrificioModel.Canales;
         }
     }));
 }
Example #2
0
 /// <summary>
 /// Obtiene datos de Interface Salida Traspaso
 /// por Lotes
 /// </summary>
 /// <param name="folioTraspaso"></param>
 public List <InterfaceSalidaTraspasoInfo> ObtenerInterfaceSalidaTraspaso(PolizaSacrificioModel folioTraspaso)
 {
     try
     {
         Logger.Info();
         var interfaceSalidaTraspasoBL = new InterfaceSalidaTraspasoBL();
         List <InterfaceSalidaTraspasoInfo> resultado = interfaceSalidaTraspasoBL
                                                        .ObtenerInterfaceSalidaTraspaso(folioTraspaso);
         return(resultado);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Example #3
0
        /// <summary>
        /// Obtiene datos de Interface Salida Traspaso
        /// por Lotes
        /// </summary>
        /// <param name="folioTraspaso"></param>
        internal List <InterfaceSalidaTraspasoInfo> ObtenerInterfaceSalidaTraspaso(PolizaSacrificioModel folioTraspaso)
        {
            List <InterfaceSalidaTraspasoInfo> result = null;

            try
            {
                Logger.Info();
                Dictionary <string, object> parametros =
                    AuxInterfaceSalidaTraspasoDAL.ObtenerParametrosInterfaceSalidaTraspaso(folioTraspaso);
                DataSet ds = Retrieve("InterfaceSalidaTraspaso_ObtenerPorLote", parametros);
                if (ValidateDataSet(ds))
                {
                    result = MapInterfaceSalidaTraspasoDAL.ObtenerInterfaceSalidaTraspasoPorLotes(ds);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(result);
        }
Example #4
0
        /// <summary>
        /// Genera la estructura de la poliza de la 300
        /// </summary>
        /// <param name="polizaSacrificioModel"></param>
        /// <param name="cuentasSap"></param>
        /// <param name="proveedores"></param>
        /// <param name="parametroGeneral"></param>
        /// <param name="organizacion"></param>
        /// <param name="textoDocumento"></param>
        /// <param name="tipoMovimiento"></param>
        /// <param name="postFijoRef3"></param>
        /// <returns></returns>
        private List <PolizaInfo> ObtenerPoliza300(List <PolizaSacrificioModel> datosPoliza
                                                   , IList <CuentaSAPInfo> cuentasSap
                                                   , IList <ProveedorInfo> proveedores
                                                   , ParametroGeneralInfo parametroGeneral
                                                   , OrganizacionInfo organizacion
                                                   , string textoDocumento, string tipoMovimiento
                                                   , string postFijoRef3)
        {
            var     polizasSacrificio = new List <PolizaInfo>();
            decimal importe           = 0;
            int     linea             = 0;

            var sbRef3 = new StringBuilder();

            sbRef3.Append("03");
            sbRef3.Append(
                string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft(
                    10, ' '));
            sbRef3.Append(new Random(10).Next(10, 20));
            sbRef3.Append(new Random(30).Next(30, 40));
            sbRef3.Append(DateTime.Now.Millisecond);
            sbRef3.Append(postFijoRef3);

            var sbArchivo = new StringBuilder(ObtenerArchivoFolio(datosPoliza.FirstOrDefault().Fecha));

            Thread.Sleep(1000);

            PolizaSacrificioModel polizaSacrificioModel = new PolizaSacrificioModel();

            datosPoliza = datosPoliza.GroupBy(grupo => new { grupo.Serie, grupo.Folio })
                          .Select(dato => new PolizaSacrificioModel
            {
                OrganizacionID = dato.Select(org => org.OrganizacionID).FirstOrDefault(),
                Canales        = dato.Select(can => can.Canales).Sum(),
                //Lote = dato.Select(lot => lot.Lote).FirstOrDefault(),
                Peso  = dato.Select(peso => peso.Peso).Sum(),
                Fecha = dato.Select(fech => fech.Fecha).FirstOrDefault(),
                Folio = dato.Key.Folio,
                //LoteID = dato.Select(lot => lot.LoteID).FirstOrDefault(),
                //Codigo = dato.Select(cod => cod.Codigo).FirstOrDefault(),
                ImporteCanal   = dato.Select(imp => imp.ImporteCanal).Sum(),
                Serie          = dato.Key.Serie,
                ImportePiel    = dato.Select(imp => imp.ImportePiel).Sum(),
                ImporteViscera = dato.Select(imp => imp.ImporteViscera).Sum()
            }).ToList();


            for (var indexSacrificio = 0; indexSacrificio < datosPoliza.Count; indexSacrificio++)
            {
                polizaSacrificioModel = datosPoliza[indexSacrificio];

                importe = polizaSacrificioModel.ImporteViscera +
                          polizaSacrificioModel.ImporteCanal +
                          polizaSacrificioModel.ImportePiel;


                //var numeroReferencia = new StringBuilder(string.Format("{0}{1}", polizaSacrificioModel.Folio, ObtenerNumeroReferencia));
                var numeroReferencia = ObtenerNumeroReferenciaFolio(Convert.ToInt64(polizaSacrificioModel.Folio));

                CuentaSAPInfo cuentaSAP = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAP.Equals(ObtenerCuentaPoliza300));
                if (cuentaSAP == null)
                {
                    throw new ExcepcionServicio("CUENTA PARA CANAL NO CONFIGURADA");
                }
                var datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = polizaSacrificioModel.Fecha,
                    Folio            = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture),
                    ClaseDocumento   = postFijoRef3,
                    Importe          =
                        string.Format("{0}", Cancelacion ? (importe * -1).ToString("F2")
                                                         : importe.ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    Renglon           = Convert.ToString(++linea),
                    ImporteIva        = "0",
                    Ref3             = sbRef3.ToString(),
                    Cuenta           = cuentaSAP.CuentaSAP,
                    Segmento         = "S300",
                    DescripcionCosto = cuentaSAP.Descripcion,
                    Division         = organizacion.Division,
                    ArchivoFolio     = sbArchivo.ToString(),
                    PesoOrigen       = polizaSacrificioModel.Peso,
                    TipoDocumento    = textoDocumento,
                    Concepto         = String.Format("{0}-{1} {2} {3} CANALES {4} Fecha: {5}",
                                                     polizaSacrificioModel.Serie, polizaSacrificioModel.Folio,
                                                     tipoMovimiento
                                                     , polizaSacrificioModel.Canales
                                                     , polizaSacrificioModel.Peso
                                                     , polizaSacrificioModel.Fecha.ToString("yyyyMMdd")),
                    Sociedad = organizacion.Sociedad,
                    ArchivoEnviadoServidor = 1
                };
                PolizaInfo polizaSacrificio = GeneraRegistroPoliza(datos);
                polizasSacrificio.Add(polizaSacrificio);

                ProveedorInfo proveedor = proveedores.FirstOrDefault(codigo => codigo.CodigoSAP.Equals(parametroGeneral.Valor));
                if (proveedor == null)
                {
                    throw new ExcepcionServicio(string.Format("EL PROVEEDOR CON CODIGO {0} SE ENCUENTRA INACTIVO",
                                                              parametroGeneral.Valor));
                }
                datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = polizaSacrificioModel.Fecha,
                    Folio            = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture),
                    ClaseDocumento   = postFijoRef3,
                    Importe          =
                        string.Format("{0}", Cancelacion ? (importe).ToString("F2")
                                                         : (importe * -1).ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    Renglon           = Convert.ToString(++linea),
                    Ref3             = sbRef3.ToString(),
                    ImporteIva       = "0",
                    ClaveProveedor   = proveedor.CodigoSAP,
                    DescripcionCosto = proveedor.Descripcion,
                    Division         = organizacion.Division,
                    ArchivoFolio     = sbArchivo.ToString(),
                    PesoOrigen       = polizaSacrificioModel.Peso,
                    TipoDocumento    = textoDocumento,
                    Concepto         = String.Format("{0}-{1} {2} {3} CANALES {4} Fecha: {5}",
                                                     polizaSacrificioModel.Serie, polizaSacrificioModel.Folio,
                                                     tipoMovimiento
                                                     , polizaSacrificioModel.Canales
                                                     , polizaSacrificioModel.Peso
                                                     , polizaSacrificioModel.Fecha.ToString("yyyyMMdd")),
                    Sociedad = organizacion.Sociedad,
                    ArchivoEnviadoServidor = 1,
                    Segmento = "S300",
                };
                polizaSacrificio = GeneraRegistroPoliza(datos);
                polizasSacrificio.Add(polizaSacrificio);
            }
            return(polizasSacrificio);
        }
Example #5
0
        /// <summary>
        /// Genera la estructura de la poliza de la 212
        /// </summary>
        /// <param name="polizaSacrificioModel"></param>
        /// <param name="cuentasSap"></param>
        /// <param name="proveedores"></param>
        /// <param name="parametroGeneral"></param>
        /// <param name="organizacion"></param>
        /// <param name="textoDocumento"></param>
        /// <param name="tipoMovimiento"></param>
        /// <param name="postFijoRef3"></param>
        /// <param name="parametroOrganizacion"> </param>
        /// <returns></returns>
        private List <PolizaInfo> ObtenerPoliza212(List <PolizaSacrificioModel> datosPoliza
                                                   , IList <CuentaSAPInfo> cuentasSap
                                                   , IList <ProveedorInfo> proveedores
                                                   , ParametroGeneralInfo parametroGeneral
                                                   , OrganizacionInfo organizacion
                                                   , string textoDocumento, string tipoMovimiento
                                                   , string postFijoRef3, ParametroOrganizacionInfo parametroOrganizacion)
        {
            var             polizasSacrificio = new List <PolizaInfo>();
            DatosPolizaInfo datoCliente;
            bool            datoClienteRegistrado = false;
            int             linea   = 0;
            int             canales = 0;
            decimal         peso    = 0;
            PolizaInfo      polizaSacrificioCliente = new PolizaInfo();


            var sbRef3 = new StringBuilder();

            sbRef3.Append("03");
            sbRef3.Append(
                string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft(
                    10, ' '));
            sbRef3.Append(new Random(10).Next(10, 20));
            sbRef3.Append(new Random(30).Next(30, 40));
            sbRef3.Append(DateTime.Now.Millisecond);
            sbRef3.Append(postFijoRef3);
            PolizaSacrificioModel polizaSacrificioModel = new PolizaSacrificioModel();

            var sbArchivo = new StringBuilder(ObtenerArchivoFolio(datosPoliza.FirstOrDefault().Fecha));

            Thread.Sleep(1000);

            for (var indexSacrificio = 0; indexSacrificio < datosPoliza.Count; indexSacrificio++)
            {
                polizaSacrificioModel = datosPoliza[indexSacrificio];
                long folio = 0;
                long.TryParse(polizaSacrificioModel.Folio, out folio);
                //var numeroReferencia = new StringBuilder(string.Format("{0}{1}", polizaSacrificioModel.Folio, ObtenerNumeroReferencia));
                var numeroReferencia = ObtenerNumeroReferenciaFolio(Convert.ToInt64(folio));

                CuentaSAPInfo cuentaSAP = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAP.Equals(ObtenerCuentaCanal));
                if (cuentaSAP == null)
                {
                    throw new ExcepcionServicio("CUENTA PARA CANAL NO CONFIGURADA");
                }

                var datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = polizaSacrificioModel.Fecha,
                    Folio            = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture),
                    ClaseDocumento   = postFijoRef3,
                    Importe          =
                        string.Format("{0}", Cancelacion ? polizaSacrificioModel.ImporteCanal.ToString("F2")
                                                         : (polizaSacrificioModel.ImporteCanal * -1).ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    Renglon           = Convert.ToString(++linea),
                    Ref3             = sbRef3.ToString(),
                    Cuenta           = cuentaSAP.CuentaSAP,
                    CentroBeneficio  = parametroOrganizacion.Valor,
                    DescripcionCosto = cuentaSAP.Descripcion,
                    Division         = organizacion.Division,
                    ArchivoFolio     = sbArchivo.ToString(),
                    ImporteIva       = "0",
                    PesoOrigen       = polizaSacrificioModel.Peso,
                    TipoDocumento    = textoDocumento,
                    Concepto         = String.Format("{0}-{1} {2}-{3} {4} CANALES {5}",
                                                     polizaSacrificioModel.Serie, polizaSacrificioModel.Folio,
                                                     tipoMovimiento, polizaSacrificioModel.Lote
                                                     , polizaSacrificioModel.Canales
                                                     , polizaSacrificioModel.Peso),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                PolizaInfo polizaSacrificio = GeneraRegistroPoliza(datos);
                polizaSacrificio.Corral = polizaSacrificioModel.Corral;
                polizasSacrificio.Add(polizaSacrificio);

                cuentaSAP = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAP.Equals(ObtenerCuentaPiel));
                if (cuentaSAP == null)
                {
                    throw new ExcepcionServicio("CUENTA PARA PIEL NO CONFIGURADA");
                }
                datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = polizaSacrificioModel.Fecha,
                    Folio            = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture),
                    ClaseDocumento   = postFijoRef3,
                    Importe          =
                        string.Format("{0}", Cancelacion ? polizaSacrificioModel.ImportePiel.ToString("F2")
                                                         : (polizaSacrificioModel.ImportePiel * -1).ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    Renglon           = Convert.ToString(++linea),
                    Ref3             = sbRef3.ToString(),
                    Cuenta           = cuentaSAP.CuentaSAP,
                    ImporteIva       = "0",
                    CentroBeneficio  = parametroOrganizacion.Valor,
                    DescripcionCosto = cuentaSAP.Descripcion,
                    Division         = organizacion.Division,
                    ArchivoFolio     = sbArchivo.ToString(),
                    PesoOrigen       = polizaSacrificioModel.Peso,
                    TipoDocumento    = textoDocumento,
                    Concepto         = String.Format("{0}-{1} {2}-{3} {4} CANALES {5}",
                                                     polizaSacrificioModel.Serie, polizaSacrificioModel.Folio,
                                                     tipoMovimiento, polizaSacrificioModel.Lote
                                                     , polizaSacrificioModel.Canales
                                                     , polizaSacrificioModel.Peso),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaSacrificio        = GeneraRegistroPoliza(datos);
                polizaSacrificio.Corral = polizaSacrificioModel.Corral;
                polizasSacrificio.Add(polizaSacrificio);

                cuentaSAP = cuentasSap.FirstOrDefault(cuenta => cuenta.CuentaSAP.Equals(ObtenerCuentaViscera));
                if (cuentaSAP == null)
                {
                    throw new ExcepcionServicio("CUENTA PARA VISCERA NO CONFIGURADA");
                }
                datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = polizaSacrificioModel.Fecha,
                    Folio            = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture),
                    ClaseDocumento   = postFijoRef3,
                    Importe          =
                        string.Format("{0}", Cancelacion ? polizaSacrificioModel.ImporteViscera.ToString("F2")
                                                         : (polizaSacrificioModel.ImporteViscera * -1).ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    Renglon           = Convert.ToString(++linea),
                    Ref3             = sbRef3.ToString(),
                    ImporteIva       = "0",
                    Cuenta           = cuentaSAP.CuentaSAP,
                    CentroBeneficio  = parametroOrganizacion.Valor,
                    DescripcionCosto = cuentaSAP.Descripcion,
                    Division         = organizacion.Division,
                    ArchivoFolio     = sbArchivo.ToString(),
                    PesoOrigen       = polizaSacrificioModel.Peso,
                    TipoDocumento    = textoDocumento,
                    Concepto         = String.Format("{0}-{1} {2}-{3} {4} CANALES {5}",
                                                     polizaSacrificioModel.Serie, polizaSacrificioModel.Folio,
                                                     tipoMovimiento, polizaSacrificioModel.Lote
                                                     , polizaSacrificioModel.Canales
                                                     , polizaSacrificioModel.Peso),
                    Sociedad = organizacion.Sociedad,
                    Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaSacrificio        = GeneraRegistroPoliza(datos);
                polizaSacrificio.Corral = polizaSacrificioModel.Corral;
                polizasSacrificio.Add(polizaSacrificio);

                ProveedorInfo proveedor = proveedores.FirstOrDefault(codigo => codigo.CodigoSAP.Equals(parametroGeneral.Valor));
                if (proveedor == null)
                {
                    throw new ExcepcionServicio(string.Format("EL PROVEEDOR CON CODIGO {0} SE ENCUENTRA INACTIVO",
                                                              parametroGeneral.Valor));
                }

                if (datoClienteRegistrado)
                {
                    polizaSacrificioCliente.Importe =
                        string.Format("{0}", Cancelacion ? (Convert.ToDecimal(polizaSacrificioCliente.Importe) + ((polizaSacrificioModel.ImporteViscera
                                                                                                                   + polizaSacrificioModel.ImporteCanal
                                                                                                                   + polizaSacrificioModel.ImportePiel) * -1)).ToString("F2")
                                                            : (Convert.ToDecimal(polizaSacrificioCliente.Importe) + (polizaSacrificioModel.ImporteViscera
                                                                                                                     + polizaSacrificioModel.ImporteCanal
                                                                                                                     + polizaSacrificioModel.ImportePiel)).ToString("F2"));

                    canales = canales + polizaSacrificioModel.Canales;
                    peso    = peso + polizaSacrificioModel.Peso;
                    polizaSacrificioCliente.Concepto = String.Format("{0}-{1} {2} {3} CANALES {4} Fecha:{5}",
                                                                     polizaSacrificioModel.Serie, polizaSacrificioModel.Folio,
                                                                     tipoMovimiento
                                                                     , canales
                                                                     , peso, polizaSacrificioModel.Fecha.ToString("yyyyMMdd"));
                }
                else
                {
                    datoCliente = new DatosPolizaInfo
                    {
                        NumeroReferencia = numeroReferencia,
                        FechaEntrada     = polizaSacrificioModel.Fecha,
                        Folio            = polizaSacrificioModel.Folio.ToString(CultureInfo.InvariantCulture),
                        ClaseDocumento   = postFijoRef3,
                        Importe          =
                            string.Format("{0}", Cancelacion ? ((polizaSacrificioModel.ImporteViscera
                                                                 + polizaSacrificioModel.ImporteCanal
                                                                 + polizaSacrificioModel.ImportePiel) * -1).ToString("F2")
                                                                : (polizaSacrificioModel.ImporteViscera
                                                                   + polizaSacrificioModel.ImporteCanal
                                                                   + polizaSacrificioModel.ImportePiel).ToString("F2")),
                        IndicadorImpuesto = String.Empty,
                        //Renglon = Convert.ToString(++linea),
                        Ref3             = sbRef3.ToString(),
                        Cliente          = proveedor.CodigoSAP,
                        DescripcionCosto = proveedor.Descripcion,
                        Division         = organizacion.Division,
                        ArchivoFolio     = sbArchivo.ToString(),
                        PesoOrigen       = polizaSacrificioModel.Peso,
                        ImporteIva       = "0",
                        TipoDocumento    = textoDocumento,
                        Concepto         = String.Format("{0}-{1} {2} {3} CANALES {4} Fecha:{5}",
                                                         polizaSacrificioModel.Serie, polizaSacrificioModel.Folio,
                                                         tipoMovimiento
                                                         , polizaSacrificioModel.Canales
                                                         , polizaSacrificioModel.Peso, polizaSacrificioModel.Fecha.ToString("yyyyMMdd")),
                        Sociedad = organizacion.Sociedad,
                        Segmento = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                    };
                    datoClienteRegistrado   = true;
                    polizaSacrificioCliente = GeneraRegistroPoliza(datoCliente);
                    peso    = polizaSacrificioModel.Peso;
                    canales = polizaSacrificioModel.Canales;
                }
            }
            polizaSacrificioCliente.NumeroLinea = (++linea).ToString();
            polizaSacrificioCliente.Corral      = "A";
            polizasSacrificio.Add(polizaSacrificioCliente);

            return(polizasSacrificio);
        }
Example #6
0
 /// <summary>
 /// Obtiene los parametros necesarios
 /// para la ejecucion del procedimiento
 /// almacenado InterfaceSalidaTraspaso_ObtenerPorLote
 /// </summary>
 /// <param name="folioTraspaso"></param>
 /// <returns></returns>
 internal static Dictionary <string, object> ObtenerParametrosInterfaceSalidaTraspaso(PolizaSacrificioModel folioTraspaso)
 {
     try
     {
         Logger.Info();
         var parametros = new Dictionary <string, object>
         {
             { "@InterfaceDetalleID", folioTraspaso.InterfaceSalidaTraspasoDetalleID },
             { "@LoteID", folioTraspaso.LoteID }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
Example #7
0
        /// <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;
                                    }
                                });
                            }
                        }
                    });
                }
            }
        }