public ReturnValor Insertar(TrazabilidadEntity entity)
       {

           using (TransactionScope tx = new TransactionScope(TransactionScopeOption.Required))
           {
               try
               {

                   oData = new TrazabilidadData();
                   oDataDetalle = new TrazabilidadDetalleData();
                   oReturnValor = new ReturnValor();
                   oReturnValor.Exitosa = oData.Insertar(entity);
                   oDataDetalle.Eliminar(entity.codigoTraza);
                   foreach (TrazabilidadDetalleEntity detalle in entity.lstTrazabilidadDeta)
                   {
                       detalle.codigoTraza = entity.codigoTraza;
                       oDataDetalle.Insertar(detalle);                      
                   }
                   tx.Complete();
               }
               catch (Exception ex)
               {
                   oReturnValor = HelpException.mTraerMensaje(ex);
               }

           }

           return oReturnValor;
       }
       public bool Actualizar(TrazabilidadEntity objEntity)
       {
           string codigoRetorno = string.Empty;
           try
           {

               using (_DBMLTrazabilidadDataContext SQLDC = new _DBMLTrazabilidadDataContext(conexion))
               {
                   SQLDC.pa_U_Trazabilidad(
                      objEntity.codigoTraza,
                       objEntity.producto,
                       objEntity.descripcion,
                       objEntity.estado
                       );
                   objEntity.codigoTraza = codigoRetorno;
               }
           }
           catch (Exception ex)
           {
               log.Error(String.Concat("Actualizar", " | ", ex.Message.ToString()));
               throw ex;
           }
           return codigoRetorno == string.Empty ? false : true;
       }
        public ActionResult GuardarTrazabilidad(List<KardexEntity> listakardex, List<OrdenDeCompraEntity> listaOrdenCompra, List<InformeVentaEntity> listaventa, List<HojaMermaEntity> listamerma, List<OrdenDeDespachoEntity> listadespacho, List<LibroRecetaEntity> listareceta, string CodigoProducto) //TrazabilidadEntity pentity)
        {
            string tipoDevol = null;
            object DataDevol = null;
            object jsonResponse;
            try
            {
                trazabilidadLogic = new TrazabilidadLogic();
                TrazabilidadEntity entity = new TrazabilidadEntity();
                TrazabilidadDetalleEntity detalle;
                List<TrazabilidadDetalleEntity> listadetalle= new List<TrazabilidadDetalleEntity>();
                //listadetalle.Add();
                foreach (KardexEntity item in listakardex)
                {
                    detalle = new TrazabilidadDetalleEntity();
                    detalle.numeroKardex = item.numeroKardex;
                    listadetalle.Add(detalle);
                }

                foreach (OrdenDeCompraEntity item in listaOrdenCompra)
                {
                    detalle = new TrazabilidadDetalleEntity();
                    detalle.codigoCompra = item.codigoCompra;
                    listadetalle.Add(detalle);
                }

                foreach (InformeVentaEntity item in listaventa)
                {
                    detalle = new TrazabilidadDetalleEntity();
                    detalle.codigoVenta = item.codigoVenta;
                    listadetalle.Add(detalle);
                }

                foreach (HojaMermaEntity item in listamerma)
                {
                    detalle = new TrazabilidadDetalleEntity();
                    detalle.numeroHojaMerma = item.numeroHojaMerma;
                    listadetalle.Add(detalle);
                }

                foreach (LibroRecetaEntity item in listareceta)
                {
                    detalle = new TrazabilidadDetalleEntity();
                    detalle.nombreProducto = item.codigolibroreceta;
                    listadetalle.Add(detalle);
                }

                foreach (OrdenDeDespachoEntity item in listadespacho)
                {
                    detalle = new TrazabilidadDetalleEntity();
                    detalle.numeroOrden = item.numeroOrden;
                    listadetalle.Add(detalle);
                }

                entity.estado = "CONSULTADO";
                entity.producto = CodigoProducto;
                entity.lstTrazabilidadDeta = listadetalle;

                trazabilidadLogic.Insertar(entity);
               
                //if (pSolicitud.Codigo != 0)
                //    returnValor = objSolicitudLogic.ActualizarSolicitud(pSolicitud);
                //else
                //    returnValor = objSolicitudLogic.RegistrarSolicitud(pSolicitud);

                DataDevol = returnValor.Message;
                tipoDevol = returnValor.Exitosa ? "C" : "I";

            }
            catch (Exception ex)
            {
                tipoDevol = "E";
               // log.Error(String.Concat("GuardarTrazabilidad", " | ", ex.Message));
                DataDevol = ex.Message;
            }
            finally
            {
                jsonResponse = new
                {
                    Type = tipoDevol,
                    Data = DataDevol,
                };
            }
            return Json(jsonResponse, JsonRequestBehavior.AllowGet);
        }