public int Insertar(NotaIngresoAlmacen notaIngresoAlmacen)
        {
            int result = 0;

            var parameters = new DynamicParameters();

            parameters.Add("@EmpresaId", notaIngresoAlmacen.EmpresaId);
            parameters.Add("@AlmacenId", notaIngresoAlmacen.AlmacenId);
            parameters.Add("@GuiaRecepcionMateriaPrimaId", notaIngresoAlmacen.GuiaRecepcionMateriaPrimaId);
            parameters.Add("@Numero", notaIngresoAlmacen.Numero);
            parameters.Add("@TipoProduccionId", notaIngresoAlmacen.TipoProduccionId);
            parameters.Add("@TipoCertificacionId", notaIngresoAlmacen.TipoCertificacionId);
            parameters.Add("@EntidadCertificadoraId", notaIngresoAlmacen.EntidadCertificadoraId);

            parameters.Add("@TipoProvedorId", notaIngresoAlmacen.TipoProvedorId);
            parameters.Add("@SocioId", notaIngresoAlmacen.SocioId);
            parameters.Add("@TerceroId", notaIngresoAlmacen.TerceroId);
            parameters.Add("@IntermediarioId", notaIngresoAlmacen.IntermediarioId);
            parameters.Add("@ProductoId", notaIngresoAlmacen.ProductoId);
            parameters.Add("@SubProductoId", notaIngresoAlmacen.SubProductoId);
            parameters.Add("@UnidadMedidaIdPesado", notaIngresoAlmacen.UnidadMedidaIdPesado);
            parameters.Add("@CantidadPesado", notaIngresoAlmacen.CantidadPesado);
            parameters.Add("@KilosBrutosPesado", notaIngresoAlmacen.KilosBrutosPesado);
            parameters.Add("@TaraPesado", notaIngresoAlmacen.TaraPesado);
            parameters.Add("@KilosNetosPesado", notaIngresoAlmacen.KilosNetosPesado);
            parameters.Add("@QQ55", notaIngresoAlmacen.QQ55);
            parameters.Add("@ExportableGramosAnalisisFisico", notaIngresoAlmacen.ExportableGramosAnalisisFisico);
            parameters.Add("@ExportablePorcentajeAnalisisFisico", notaIngresoAlmacen.ExportablePorcentajeAnalisisFisico);
            parameters.Add("@DescarteGramosAnalisisFisico", notaIngresoAlmacen.DescarteGramosAnalisisFisico);
            parameters.Add("@DescartePorcentajeAnalisisFisico", notaIngresoAlmacen.DescartePorcentajeAnalisisFisico);
            parameters.Add("@CascarillaGramosAnalisisFisico", notaIngresoAlmacen.CascarillaGramosAnalisisFisico);
            parameters.Add("@CascarillaPorcentajeAnalisisFisico", notaIngresoAlmacen.CascarillaPorcentajeAnalisisFisico);
            parameters.Add("@TotalGramosAnalisisFisico", notaIngresoAlmacen.TotalGramosAnalisisFisico);
            parameters.Add("@TotalPorcentajeAnalisisFisico", notaIngresoAlmacen.TotalPorcentajeAnalisisFisico);
            parameters.Add("@TotalAnalisisSensorial", notaIngresoAlmacen.TotalAnalisisSensorial);
            parameters.Add("@HumedadPorcentajeAnalisisFisico", notaIngresoAlmacen.HumedadPorcentajeAnalisisFisico);
            parameters.Add("@Observacion", notaIngresoAlmacen.Observacion);
            parameters.Add("@RendimientoPorcentaje", notaIngresoAlmacen.RendimientoPorcentaje);
            parameters.Add("@EstadoId", notaIngresoAlmacen.EstadoId);
            parameters.Add("@FechaRegistro", notaIngresoAlmacen.FechaRegistro);
            parameters.Add("@UsuarioRegistro", notaIngresoAlmacen.UsuarioRegistro);

            using (IDbConnection db = new SqlConnection(_connectionString.Value.CoffeeConnectDB))
            {
                result = db.Execute("uspNotaIngresoAlmacenInsertar", parameters, commandType: CommandType.StoredProcedure);
            }

            return(result);
        }
        /*
         *
         *
         *
         *
         *              parameters.Add("@TotalGramosAnalisisFisico", notaIngresoAlmacen.TotalGramosAnalisisFisico);
         *              parameters.Add("@TotalPorcentajeAnalisisFisico", notaIngresoAlmacen.TotalPorcentajeAnalisisFisico);
         *              parameters.Add("@HumedadPorcentajeAnalisisFisico", notaIngresoAlmacen.HumedadPorcentajeAnalisisFisico);
         *              parameters.Add("@Observacion", notaIngresoAlmacen.Observacion);
         *              parameters.Add("@EstadoId", notaIngresoAlmacen.EstadoId);
         *              parameters.Add("@FechaRegistro", notaIngresoAlmacen.FechaRegistro);
         *              parameters.Add("@UsuarioRegistro", notaIngresoAlmacen.UsuarioRegistro);
         *              parameters.Add("@FechaUltimaActualizacion", notaIngresoAlmacen.FechaUltimaActualizacion);
         *              parameters.Add("@UsuarioUltimaActualizacion", notaIngresoAlmacen.UsuarioUltimaActualizacion);
         *              parameters.Add("@Activo", notaIngresoAlmacen.Activo);
         *
         */

        public int Registrar(EnviarAlmacenGuiaRecepcionMateriaPrimaRequestDTO request)
        {
            ConsultaGuiaRecepcionMateriaPrimaPorIdBE guiaRecepcionMateriaPrima = _IGuiaRecepcionMateriaPrimaRepository.ConsultarGuiaRecepcionMateriaPrimaPorId(request.GuiaRecepcionMateriaPrimaId);

            NotaIngresoAlmacen notaIngresoAlmacen = new NotaIngresoAlmacen();

            notaIngresoAlmacen.GuiaRecepcionMateriaPrimaId = request.GuiaRecepcionMateriaPrimaId;

            notaIngresoAlmacen.EmpresaId            = guiaRecepcionMateriaPrima.EmpresaId;
            notaIngresoAlmacen.Numero               = _ICorrelativoRepository.Obtener(guiaRecepcionMateriaPrima.EmpresaId, Documentos.NotaIngresoAlmacen);
            notaIngresoAlmacen.AlmacenId            = null;
            notaIngresoAlmacen.TipoProvedorId       = guiaRecepcionMateriaPrima.TipoProvedorId;
            notaIngresoAlmacen.SocioId              = guiaRecepcionMateriaPrima.SocioId;
            notaIngresoAlmacen.TerceroId            = guiaRecepcionMateriaPrima.TerceroId;
            notaIngresoAlmacen.TipoProduccionId     = guiaRecepcionMateriaPrima.TipoProduccionId;
            notaIngresoAlmacen.IntermediarioId      = guiaRecepcionMateriaPrima.IntermediarioId;
            notaIngresoAlmacen.ProductoId           = guiaRecepcionMateriaPrima.ProductoId;
            notaIngresoAlmacen.SubProductoId        = guiaRecepcionMateriaPrima.SubProductoId;
            notaIngresoAlmacen.UnidadMedidaIdPesado = guiaRecepcionMateriaPrima.UnidadMedidaIdPesado;
            notaIngresoAlmacen.CantidadPesado       = guiaRecepcionMateriaPrima.CantidadPesado;
            notaIngresoAlmacen.KilosBrutosPesado    = guiaRecepcionMateriaPrima.KilosBrutosPesado;
            notaIngresoAlmacen.TaraPesado           = guiaRecepcionMateriaPrima.TaraPesado;
            notaIngresoAlmacen.KilosNetosPesado     = guiaRecepcionMateriaPrima.KilosBrutosPesado - notaIngresoAlmacen.TaraPesado;
            notaIngresoAlmacen.QQ55 = notaIngresoAlmacen.KilosNetosPesado / Convert.ToDecimal(55.2);
            notaIngresoAlmacen.ExportableGramosAnalisisFisico     = guiaRecepcionMateriaPrima.ExportableGramosAnalisisFisico;
            notaIngresoAlmacen.ExportablePorcentajeAnalisisFisico = guiaRecepcionMateriaPrima.ExportablePorcentajeAnalisisFisico;
            notaIngresoAlmacen.DescarteGramosAnalisisFisico       = guiaRecepcionMateriaPrima.DescarteGramosAnalisisFisico;
            notaIngresoAlmacen.DescartePorcentajeAnalisisFisico   = guiaRecepcionMateriaPrima.DescartePorcentajeAnalisisFisico;
            notaIngresoAlmacen.CascarillaGramosAnalisisFisico     = guiaRecepcionMateriaPrima.CascarillaGramosAnalisisFisico;
            notaIngresoAlmacen.CascarillaPorcentajeAnalisisFisico = guiaRecepcionMateriaPrima.CascarillaPorcentajeAnalisisFisico;
            notaIngresoAlmacen.TotalGramosAnalisisFisico          = guiaRecepcionMateriaPrima.TotalGramosAnalisisFisico;
            notaIngresoAlmacen.TotalPorcentajeAnalisisFisico      = guiaRecepcionMateriaPrima.TotalPorcentajeAnalisisFisico;
            notaIngresoAlmacen.TotalAnalisisSensorial             = guiaRecepcionMateriaPrima.TotalAnalisisSensorial;
            notaIngresoAlmacen.HumedadPorcentajeAnalisisFisico    = guiaRecepcionMateriaPrima.HumedadPorcentajeAnalisisFisico.Value;

            List <ConsultaSocioFincaCertificacionPorSocioFincaId> certificacionesSocio = _ISocioFincaCertificacionRepository.ConsultarSocioFincaCertificacionPorSocioFincaId(guiaRecepcionMateriaPrima.SocioFincaId.Value).ToList();

            string certificaciones = String.Empty;
            string certificadoras  = String.Empty;
            int    contador        = 1;


            foreach (ConsultaSocioFincaCertificacionPorSocioFincaId certificacion in certificacionesSocio)
            {
                if (contador == 1)
                {
                    certificaciones = certificacion.TipoCertificacionId + "|";
                    certificadoras  = certificacion.EntidadCertificadoraId + "|";
                }
                else
                {
                    certificaciones = certificaciones + certificacion.TipoCertificacionId + "|";
                    certificadoras  = certificadoras + certificacion.EntidadCertificadoraId + "|";
                }
                contador = contador + 1;
            }

            notaIngresoAlmacen.TipoCertificacionId    = certificaciones;
            notaIngresoAlmacen.EntidadCertificadoraId = certificadoras;

            if (guiaRecepcionMateriaPrima.TotalGramosAnalisisFisico.HasValue && guiaRecepcionMateriaPrima.TotalGramosAnalisisFisico > 0)
            {
                notaIngresoAlmacen.RendimientoPorcentaje = (guiaRecepcionMateriaPrima.ExportableGramosAnalisisFisico / guiaRecepcionMateriaPrima.TotalGramosAnalisisFisico) * 100;
            }
            else
            {
                notaIngresoAlmacen.RendimientoPorcentaje = 0;
            }
            //notaIngresoAlmacen.Observacion = guiaRecepcionMateriaPrima.Observacion;
            notaIngresoAlmacen.UsuarioRegistro = request.Usuario;
            notaIngresoAlmacen.FechaRegistro   = DateTime.Now;
            notaIngresoAlmacen.EstadoId        = NotaIngresoAlmacenEstados.Ingresado;



            int affected = _INotaIngresoAlmacenRepository.Insertar(notaIngresoAlmacen);

            _IGuiaRecepcionMateriaPrimaRepository.ActualizarEstado(request.GuiaRecepcionMateriaPrimaId, DateTime.Now, request.Usuario, GuiaRecepcionMateriaPrimaEstados.EnviadoAlmacen);

            return(affected);
        }