/// <summary>
        /// Actualiza estado de nota de peso con su detalle. Actualiza privilegio y notificacion.
        /// </summary>
        /// <param name="ESTADOS_NOTA_ID"></param>
        /// <param name="ESTADOS_NOTA_SIGUIENTE"></param>
        /// <param name="ESTADOS_NOTA_NOMBRE"></param>
        /// <param name="ESTADOS_NOTA_DESCRIPCION"></param>
        /// <param name="ESTADOS_NOTA_ES_CATACION"></param>
        /// <param name="ESTADOS_NOTA_ESTADO"></param>
        /// <param name="MODIFICADO_POR"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_FECHA"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_ESTADO"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_SOCIO_ID"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE"></param>
        /// <param name="ESTADOS_DETALLE_SHOW_INFO_SOCIO"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_DETALLE"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_TARA"></param>
        /// <param name="ESTADOS_DETALLE_SHOW_DESCUENTOS"></param>
        /// <param name="ESTADOS_DETALLE_SHOW_TOTAL"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN"></param>
        /// <param name="PLANTILLAS_MENSAJE"></param>
        public void ActualizarEstadoNotaDePeso
            (int ESTADOS_NOTA_ID,
            int?ESTADOS_NOTA_SIGUIENTE,
            string ESTADOS_NOTA_NOMBRE,
            string ESTADOS_NOTA_DESCRIPCION,
            bool ESTADOS_NOTA_ES_CATACION,
            bool ESTADOS_NOTA_ESTADO,
            string MODIFICADO_POR,
            bool ESTADOS_DETALLE_ENABLE_FECHA,
            int ESTADOS_DETALLE_ENABLE_ESTADO,
            int ESTADOS_DETALLE_ENABLE_SOCIO_ID,
            bool ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE,
            bool ESTADOS_DETALLE_SHOW_INFO_SOCIO,
            bool ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA,
            bool ESTADOS_DETALLE_ENABLE_DETALLE,
            bool ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS,
            bool ESTADOS_DETALLE_ENABLE_TARA,
            bool ESTADOS_DETALLE_SHOW_DESCUENTOS,
            bool ESTADOS_DETALLE_SHOW_TOTAL,
            bool ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN,
            bool ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN,
            string PLANTILLAS_MENSAJE)
        {
            try
            {
                using (var db = new colinasEntities())
                {
                    using (var scope1 = new System.Transactions.TransactionScope())
                    {
                        EntityKey k = new EntityKey("colinasEntities.estados_nota_de_peso", "ESTADOS_NOTA_ID", ESTADOS_NOTA_ID);

                        var esn = db.GetObjectByKey(k);

                        estado_nota_de_peso noteStatus = (estado_nota_de_peso)esn;

                        noteStatus.ESTADOS_NOTA_SIGUIENTE   = ESTADOS_NOTA_SIGUIENTE == 0 ? null : ESTADOS_NOTA_SIGUIENTE;
                        noteStatus.ESTADOS_NOTA_NOMBRE      = ESTADOS_NOTA_NOMBRE;
                        noteStatus.ESTADOS_NOTA_DESCRIPCION = ESTADOS_NOTA_DESCRIPCION;
                        noteStatus.ESTADOS_NOTA_ES_CATACION = ESTADOS_NOTA_ES_CATACION;
                        noteStatus.ESTADOS_NOTA_ESTADO      = ESTADOS_NOTA_ESTADO;
                        noteStatus.MODIFICADO_POR           = MODIFICADO_POR;
                        noteStatus.FECHA_MODIFICACION       = DateTime.Today;

                        /*--------------------Actualizar detalle--------------------*/
                        estado_detalle detalle = noteStatus.estados_detalles;
                        detalle.ESTADOS_DETALLE_ENABLE_FECHA              = ESTADOS_DETALLE_ENABLE_FECHA;
                        detalle.ESTADOS_DETALLE_ENABLE_ESTADO             = ESTADOS_DETALLE_ENABLE_ESTADO;
                        detalle.ESTADOS_DETALLE_ENABLE_SOCIO_ID           = ESTADOS_DETALLE_ENABLE_SOCIO_ID;
                        detalle.ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE = ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE;
                        detalle.ESTADOS_DETALLE_SHOW_INFO_SOCIO           = ESTADOS_DETALLE_SHOW_INFO_SOCIO;
                        detalle.ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA      = ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA;
                        detalle.ESTADOS_DETALLE_ENABLE_DETALLE            = ESTADOS_DETALLE_ENABLE_DETALLE;
                        detalle.ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS    = ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS;
                        detalle.ESTADOS_DETALLE_ENABLE_TARA          = ESTADOS_DETALLE_ENABLE_TARA;
                        detalle.ESTADOS_DETALLE_SHOW_DESCUENTOS      = ESTADOS_DETALLE_SHOW_DESCUENTOS;
                        detalle.ESTADOS_DETALLE_SHOW_TOTAL           = ESTADOS_DETALLE_SHOW_TOTAL;
                        detalle.ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN = ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN;
                        detalle.ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN  = ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN;


                        /*--------------------Actualizar privilegio--------------------*/
                        string PRIV_LLAVE = EstadoNotaDePesoLogic.PREFIJO_PRIVILEGIO + noteStatus.ESTADOS_NOTA_LLAVE;

                        var queryPrivilegio = from p in db.privilegios
                                              where p.PRIV_LLAVE == PRIV_LLAVE
                                              select p;

                        privilegio notePrivilege = (privilegio)queryPrivilegio.FirstOrDefault();

                        if (notePrivilege != null)
                        {
                            notePrivilege.PRIV_NOMBRE        = "Notas de Peso " + ESTADOS_NOTA_NOMBRE;
                            notePrivilege.PRIV_DESCRIPCION   = "Acceso a nivel de datos. " + ESTADOS_NOTA_DESCRIPCION;
                            notePrivilege.MODIFICADO_POR     = MODIFICADO_POR;
                            notePrivilege.FECHA_MODIFICACION = DateTime.Today;
                        }


                        /*--------------------Actualizar plantilla de notificacion--------------------*/
                        string PLANTILLAS_LLAVE = EstadoNotaDePesoLogic.PREFIJO_PLANTILLA + noteStatus.ESTADOS_NOTA_LLAVE;

                        db.plantillas_notificaciones.MergeOption = MergeOption.NoTracking;

                        Object    pl  = null;
                        EntityKey kpl = new EntityKey("colinasEntities.plantillas_notificaciones", "PLANTILLAS_LLAVE", PLANTILLAS_LLAVE);

                        if (db.TryGetObjectByKey(kpl, out pl))
                        {
                            plantilla_notificacion noteTemplate = (plantilla_notificacion)pl;

                            noteTemplate.PLANTILLAS_NOMBRE  = "Notas de Peso " + ESTADOS_NOTA_NOMBRE;
                            noteTemplate.PLANTILLAS_ASUNTO  = "Notas de Peso " + ESTADOS_NOTA_NOMBRE;
                            noteTemplate.PLANTILLAS_MENSAJE = PLANTILLAS_MENSAJE;
                            noteTemplate.MODIFICADO_POR     = MODIFICADO_POR;
                            noteTemplate.FECHA_MODIFICACION = DateTime.Today;
                        }

                        db.SaveChanges();

                        scope1.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                log.Fatal("Error fatal al actualizar estado de nota de peso.", ex);
                throw;
            }
        }
        /// <summary>
        /// Inserta el estado de nota de peso con su detalle. Crea privilegio y notificacion para nota de peso.
        /// </summary>
        /// <param name="ESTADOS_NOTA_SIGUIENTE"></param>
        /// <param name="ESTADOS_NOTA_LLAVE"></param>
        /// <param name="ESTADOS_NOTA_NOMBRE"></param>
        /// <param name="ESTADOS_NOTA_DESCRIPCION"></param>
        /// <param name="ESTADOS_NOTA_ES_CATACION"></param>
        /// <param name="ESTADOS_NOTA_ESTADO"></param>
        /// <param name="CREADO_POR"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_FECHA"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_ESTADO"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_SOCIO_ID"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE"></param>
        /// <param name="ESTADOS_DETALLE_SHOW_INFO_SOCIO"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_DETALLE"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_TARA"></param>
        /// <param name="ESTADOS_DETALLE_SHOW_DESCUENTOS"></param>
        /// <param name="ESTADOS_DETALLE_SHOW_TOTAL"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN"></param>
        /// <param name="ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN"></param>
        /// <param name="PLANTILLAS_MENSAJE"></param>
        public void InsertarEstadoNotaDePeso
            (int?ESTADOS_NOTA_SIGUIENTE,
            string ESTADOS_NOTA_LLAVE,
            string ESTADOS_NOTA_NOMBRE,
            string ESTADOS_NOTA_DESCRIPCION,
            bool ESTADOS_NOTA_ES_CATACION,
            bool ESTADOS_NOTA_ESTADO,
            string CREADO_POR,
            bool ESTADOS_DETALLE_ENABLE_FECHA,
            int ESTADOS_DETALLE_ENABLE_ESTADO,
            int ESTADOS_DETALLE_ENABLE_SOCIO_ID,
            bool ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE,
            bool ESTADOS_DETALLE_SHOW_INFO_SOCIO,
            bool ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA,
            bool ESTADOS_DETALLE_ENABLE_DETALLE,
            bool ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS,
            bool ESTADOS_DETALLE_ENABLE_TARA,
            bool ESTADOS_DETALLE_SHOW_DESCUENTOS,
            bool ESTADOS_DETALLE_SHOW_TOTAL,
            bool ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN,
            bool ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN,
            string PLANTILLAS_MENSAJE)
        {
            try
            {
                using (var db = new colinasEntities())
                {
                    using (var scope1 = new System.Transactions.TransactionScope())
                    {
                        estado_nota_de_peso noteStatus = new estado_nota_de_peso();

                        noteStatus.ESTADOS_NOTA_SIGUIENTE   = ESTADOS_NOTA_SIGUIENTE == 0 ? null : ESTADOS_NOTA_SIGUIENTE;
                        noteStatus.ESTADOS_NOTA_LLAVE       = ESTADOS_NOTA_LLAVE;
                        noteStatus.ESTADOS_NOTA_NOMBRE      = ESTADOS_NOTA_NOMBRE;
                        noteStatus.ESTADOS_NOTA_DESCRIPCION = ESTADOS_NOTA_DESCRIPCION;
                        noteStatus.ESTADOS_NOTA_ES_CATACION = ESTADOS_NOTA_ES_CATACION;
                        noteStatus.ESTADOS_NOTA_ESTADO      = ESTADOS_NOTA_ESTADO;
                        noteStatus.CREADO_POR         = noteStatus.MODIFICADO_POR = CREADO_POR;
                        noteStatus.FECHA_CREACION     = DateTime.Today;
                        noteStatus.FECHA_MODIFICACION = noteStatus.FECHA_CREACION;

                        db.estados_nota_de_peso.AddObject(noteStatus);

                        /*--------------------Crear detalle--------------------*/
                        estado_detalle detalle = new estado_detalle();
                        detalle.ESTADOS_NOTA_ID = noteStatus.ESTADOS_NOTA_ID;
                        detalle.ESTADOS_DETALLE_ENABLE_FECHA              = ESTADOS_DETALLE_ENABLE_FECHA;
                        detalle.ESTADOS_DETALLE_ENABLE_ESTADO             = ESTADOS_DETALLE_ENABLE_ESTADO;
                        detalle.ESTADOS_DETALLE_ENABLE_SOCIO_ID           = ESTADOS_DETALLE_ENABLE_SOCIO_ID;
                        detalle.ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE = ESTADOS_DETALLE_ENABLE_CLASIFICACION_CAFE;
                        detalle.ESTADOS_DETALLE_SHOW_INFO_SOCIO           = ESTADOS_DETALLE_SHOW_INFO_SOCIO;
                        detalle.ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA      = ESTADOS_DETALLE_ENABLE_FORMA_ENTREGA;
                        detalle.ESTADOS_DETALLE_ENABLE_DETALLE            = ESTADOS_DETALLE_ENABLE_DETALLE;
                        detalle.ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS    = ESTADOS_DETALLE_ENABLE_SACOS_RETENIDOS;
                        detalle.ESTADOS_DETALLE_ENABLE_TARA          = ESTADOS_DETALLE_ENABLE_TARA;
                        detalle.ESTADOS_DETALLE_SHOW_DESCUENTOS      = ESTADOS_DETALLE_SHOW_DESCUENTOS;
                        detalle.ESTADOS_DETALLE_SHOW_TOTAL           = ESTADOS_DETALLE_SHOW_TOTAL;
                        detalle.ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN = ESTADOS_DETALLE_ENABLE_REGISTRAR_BTN;
                        detalle.ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN  = ESTADOS_DETALLE_ENABLE_IMPRIMIR_BTN;

                        db.estados_detalles.AddObject(detalle);

                        /*--------------------Crear privilegio--------------------*/
                        privilegio notePrivilege = new privilegio();

                        notePrivilege.PRIV_LLAVE         = EstadoNotaDePesoLogic.PREFIJO_PRIVILEGIO + ESTADOS_NOTA_LLAVE;
                        notePrivilege.PRIV_NOMBRE        = "Notas de Peso " + ESTADOS_NOTA_NOMBRE;
                        notePrivilege.PRIV_DESCRIPCION   = "Acceso a nivel de datos. " + ESTADOS_NOTA_DESCRIPCION;
                        notePrivilege.CREADO_POR         = notePrivilege.MODIFICADO_POR = CREADO_POR;
                        notePrivilege.FECHA_CREACION     = DateTime.Today;
                        notePrivilege.FECHA_MODIFICACION = notePrivilege.FECHA_CREACION;

                        db.privilegios.AddObject(notePrivilege);

                        /*--------------------Crear plantilla de notificacion--------------------*/
                        plantilla_notificacion noteTemplate = new plantilla_notificacion();

                        noteTemplate.PLANTILLAS_LLAVE   = EstadoNotaDePesoLogic.PREFIJO_PLANTILLA + ESTADOS_NOTA_LLAVE;
                        noteTemplate.PLANTILLAS_NOMBRE  = "Notas de Peso " + ESTADOS_NOTA_NOMBRE;
                        noteTemplate.PLANTILLAS_ASUNTO  = "Notas de Peso " + ESTADOS_NOTA_NOMBRE;
                        noteTemplate.PLANTILLAS_MENSAJE = PLANTILLAS_MENSAJE;
                        noteTemplate.CREADO_POR         = noteTemplate.MODIFICADO_POR = CREADO_POR;
                        noteTemplate.FECHA_CREACION     = DateTime.Today;
                        noteTemplate.FECHA_MODIFICACION = noteTemplate.FECHA_CREACION;

                        db.plantillas_notificaciones.AddObject(noteTemplate);

                        db.SaveChanges();

                        scope1.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                log.Fatal("Error fatal al insertar estado de nota de peso.", ex);
                throw;
            }
        }