public int Agregar(InvTransaccionDTO obj)
        {
            Database db = DatabaseFactory.CreateDatabase("ApplicationConnectionString");
              DbCommand dbCommand = db.GetStoredProcCommand(C_AGREGAR);

              db.AddInParameter(dbCommand, "@id_articulo", DbType.Int32, obj.IdArticulo);
              db.AddInParameter(dbCommand, "@id_almacen", DbType.Int32, obj.IdAlmacen);
              db.AddInParameter(dbCommand, "@id_tipo_transaccion", DbType.Int32, obj.IdTipoTransaccion);
              db.AddInParameter(dbCommand, "@fecha", DbType.DateTime, GetFechaValida(obj.Fecha));
              db.AddInParameter(dbCommand, "@cantidad", DbType.Decimal, obj.Cantidad);
              db.AddInParameter(dbCommand, "@costo_unitario", DbType.Decimal, obj.CostoUnitario);
              db.AddInParameter(dbCommand, "@costo", DbType.Decimal, obj.Costo);
              db.AddInParameter(dbCommand, "@tipo_origen", DbType.String, obj.TipoOrigen);
              db.AddInParameter(dbCommand, "@id_transaccion_origen", DbType.Int32, obj.IdTransaccionOrigen);
              db.AddInParameter(dbCommand, "@id_linea_origen", DbType.Int32, obj.IdLineaOrigen);
              db.AddInParameter(dbCommand, "@descripcion", DbType.String, obj.Descripcion);
              db.AddInParameter(dbCommand, "@id_sede", DbType.Int32, obj.IdSede);
              db.AddInParameter(dbCommand, "@id_proyecto", DbType.Int32, obj.IdProyecto);
              db.AddInParameter(dbCommand, "@fecha_vencimiento", DbType.DateTime, GetFechaValida(obj.FechaVencimiento));
              db.AddInParameter(dbCommand, "@ubicacion", DbType.String, obj.Ubicacion);
              db.AddInParameter(dbCommand, "@marca", DbType.String, obj.Marca);
              db.AddInParameter(dbCommand, "@modelo", DbType.String, obj.Modelo);
              db.AddInParameter(dbCommand, "@serie", DbType.String, obj.Serie);
              db.AddInParameter(dbCommand, "@lote", DbType.String, obj.Lote);
              db.AddInParameter(dbCommand, "@observaciones_almacenamiento", DbType.String, obj.ObservacionesAlmacenamiento);
              db.AddInParameter(dbCommand, "@id_usuario_creacion", DbType.Int32, obj.IdUsuarioCreacion);
              db.AddInParameter(dbCommand, "@fecha_creacion", DbType.DateTime, GetFechaValida(obj.FechaCreacion));
              db.AddInParameter(dbCommand, "@id_usuario_modificador", DbType.Int32, obj.IdUsuarioModificador);
              db.AddInParameter(dbCommand, "@fecha_modificacion", DbType.DateTime, GetFechaValida(obj.FechaModificacion));

              int id = Convert.ToInt32(db.ExecuteScalar(dbCommand));

              return id;
        }
        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            UsuarioDTO objUsuarioDTO = objUsuarioDAO.ListarPorLogin(HttpContext.Current.User.Identity.Name);

            InvTransaccionDTO transaccionDTO = new InvTransaccionDTO();
            transaccionDTO.IdProyecto = int.Parse(this.ddlProyecto.SelectedValue.ToString());
            transaccionDTO.IdTipoTransaccion = int.Parse(ddlTipoTransaccion.SelectedValue.ToString());
            transaccionDTO.IdArticulo = int.Parse(txtIdArticulo.Text);
            transaccionDTO.Descripcion = txtDescripcion.Text;
            transaccionDTO.Cantidad = Decimal.Parse(txtCantidad.Text);
            transaccionDTO.CostoUnitario = Decimal.Parse(txtPrecio.Text);
            transaccionDTO.Costo = transaccionDTO.Cantidad * transaccionDTO.CostoUnitario;
            transaccionDTO.Fecha = DateTime.Now;  //AppUtilidad.stringToDateTime(this.txtFechaTransaccion.Text, "DD/MM/YYYY");
            transaccionDTO.TipoOrigen = "MANUAL";
            transaccionDTO.IdUsuarioCreacion = objUsuarioDTO.IdUsuario;
            transaccionDTO.FechaCreacion = DateTime.Now;

            int idTransaccion = objTransaccionDAO.Agregar(transaccionDTO);
            txtId.Text = idTransaccion.ToString();

            DespachoDTO objDespachoDTO = new DespachoDTO();

            objDespachoDTO.TipoOrigen = "TRX";
            objDespachoDTO.IdOrigen = idTransaccion;
            objDespachoDTO.FechaDespacho = DateTime.Now;
            objDespachoDTO.Estado = "1";
            objDespachoDTO.IdUsuarioCreacion = objUsuarioDTO.IdUsuario;
            objDespachoDTO.FechaCreacion = DateTime.Now;

            objDespachoDAO.Agregar(objDespachoDTO);

            this.lblMensaje.Text = "Se registro la transaccion de inventario";
        }
        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            InvTransaccionDTO objInvTransaccionDTO = new InvTransaccionDTO();

            RecepcionLineaDTO objRecepcionLineaDTO = new RecepcionLineaDTO();

            RecepcionDTO objRecepcionDTO = objRecepcionDAO.ListarPorClave( Convert.ToInt32(this.lblIdRecepcion.Text));

            objInvTransaccionDTO.IdArticulo = Convert.ToInt32(this.txtIdArticulo.Text);
            objInvTransaccionDTO.IdAlmacen = Convert.ToInt32(this.ddlAlmacen.SelectedValue);
            objInvTransaccionDTO.IdTipoTransaccion = Convert.ToInt32(this.ddlTipoTransaccion.SelectedValue);
            objInvTransaccionDTO.Fecha = DateTime.Now; //AppUtilidad.stringToDateTime( this.txtFechaTransaccion.Text, "DD/MM/YYYY");
            objInvTransaccionDTO.Cantidad = Convert.ToDecimal(this.lblCantidadRecibo.Text);
            objInvTransaccionDTO.TipoOrigen = "REC";
            objInvTransaccionDTO.IdTransaccionOrigen = Convert.ToInt32(this.txtIdRecepcion.Text);
            objInvTransaccionDTO.IdLineaOrigen = Convert.ToInt32(this.txtIdRecepcionLinea.Text);
            objInvTransaccionDTO.Descripcion = this.txtDescripcion.Text;

            objInvTransaccionDTO.IdSede = objRecepcionDTO.IdSede;
            objInvTransaccionDTO.IdProyecto = objRecepcionDTO.IdProyecto;
            objInvTransaccionDTO.Ubicacion = this.txtUbicacion.Text;
            objInvTransaccionDTO.FechaVencimiento = AppUtilidad.stringToDateTime(this.txtFechaVencimiento.Text, "DD/MM/YYYY");
            objInvTransaccionDTO.Lote = this.txtLote.Text;

            objInvTransaccionDTO.Marca = this.txtMarca.Text;
            objInvTransaccionDTO.Modelo = this.txtModelo.Text;
            objInvTransaccionDTO.Serie = this.txtSerie.Text;
            objInvTransaccionDTO.ObservacionesAlmacenamiento = this.txtObsAlmacenamiento.Text;

            objInvTransaccionDTO.IdUsuarioCreacion = Convert.ToInt32(this.txtIdUsuario.Text);
            objInvTransaccionDTO.FechaCreacion = DateTime.Now;

            objInvTransaccionDAO.Agregar(objInvTransaccionDTO);

            objRecepcionLineaDTO = objRecepcionLineaDAO.ListarPorClave( Convert.ToInt32( this.txtIdRecepcionLinea.Text));

            objRecepcionLineaDTO.Estado = "2"; // Transferido

            objRecepcionLineaDAO.Actualizar(objRecepcionLineaDTO);

            Response.Redirect("frmRecepcionInventario.aspx");
        }
        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            Boolean trxValido = false;

            this.lblMensaje.Text = "";

            try
            {

                UsuarioDTO objUsuarioDTO = objUsuarioDAO.ListarPorLogin(HttpContext.Current.User.Identity.Name);

                InvTransaccionDTO transaccionDTO = new InvTransaccionDTO();
                transaccionDTO.IdProyecto = int.Parse(this.ddlProyecto.SelectedValue.ToString());
                transaccionDTO.IdTipoTransaccion = int.Parse(ddlTipoTransaccion.SelectedValue.ToString());
                transaccionDTO.IdArticulo = int.Parse(txtIdArticulo.Text);
                transaccionDTO.Descripcion = txtDescripcion.Text;
                transaccionDTO.Cantidad = Decimal.Parse(txtCantidad.Text);
                transaccionDTO.CostoUnitario = Decimal.Parse(txtPrecio.Text);
                transaccionDTO.Costo = transaccionDTO.Cantidad * transaccionDTO.CostoUnitario;
                transaccionDTO.Fecha = DateTime.Now;  //AppUtilidad.stringToDateTime(this.txtFechaTransaccion.Text, "DD/MM/YYYY");
                transaccionDTO.TipoOrigen = "MANUAL";
                transaccionDTO.IdUsuarioCreacion = objUsuarioDTO.IdUsuario;
                transaccionDTO.FechaCreacion = DateTime.Now;

                if (txtlote.Text.Trim() == "")
                {
                    transaccionDTO.Lote = "S/L";
                }
                else
                {
                    transaccionDTO.Lote = txtlote.Text.Trim();
                }

                if (txtfechavencimiento.Text.Trim() == "")
                {
                    transaccionDTO.FechaVencimiento = DateTime.Parse("01/01/2050");
                }
                else
                {
                    //transaccionDTO.FechaVencimiento = DateTime.Parse(txtfechavencimiento.Text);
                    transaccionDTO.FechaVencimiento = AppUtilidad.stringToDateTime(txtfechavencimiento.Text, "DD/MM/YYYY");
                }

                //--------------
                // Validar stock
                //--------------
                InvTipoTransaccionDTO objInvTipoTransaccionDTO = objTipoTransaccionDAO.ListarPorClave(int.Parse(ddlTipoTransaccion.SelectedValue.ToString()));

                if (objInvTipoTransaccionDTO.Clase == "S")
                {
                    //Verifica Stock
                    //Decimal stock = objArticuloDAO.Stock(int.Parse(txtIdArticulo.Text), int.Parse(this.ddlProyecto.SelectedValue.ToString()));
                    Decimal stock = objArticuloDAO.Stock1(int.Parse(txtIdArticulo.Text), int.Parse(this.ddlProyecto.SelectedValue.ToString()),transaccionDTO.Lote,transaccionDTO.FechaVencimiento);

                    if (Decimal.Parse(txtCantidad.Text) <= stock)
                    {
                        trxValido = true;
                    }

                }
                else
                    trxValido = true;

                if (trxValido)
                {
                    int idTransaccion = objTransaccionDAO.Agregar(transaccionDTO);
                    txtId.Text = idTransaccion.ToString();

                    DespachoDTO objDespachoDTO = new DespachoDTO();

                    objDespachoDTO.TipoOrigen = "TRX";
                    objDespachoDTO.IdOrigen = idTransaccion;
                    objDespachoDTO.FechaDespacho = DateTime.Now;
                    objDespachoDTO.Estado = "1";
                    objDespachoDTO.IdUsuarioCreacion = objUsuarioDTO.IdUsuario;
                    objDespachoDTO.FechaCreacion = DateTime.Now;

                    objDespachoDAO.Agregar(objDespachoDTO);

                    this.lblMensaje.Text = "Se registro la transaccion de inventario " + idTransaccion.ToString();
                }
                else
                    this.lblMensaje.Text = "No hay suficiente stock para realizar el despacho, verifique lote y fecha de vencimiento";

            }
            catch (Exception ex)
            {
                this.lblMensaje.Text = ex.ToString();
            }
        }
        public InvTransaccionDTO ListarPorClave(int idTransaccion)
        {
            List<InvTransaccionDTO> Lista = new List<InvTransaccionDTO>();
              InvTransaccionDTO obj = null;
              Database db = DatabaseFactory.CreateDatabase("ApplicationConnectionString");
              DbCommand dbCommand = db.GetStoredProcCommand(C_LISTAR_POR_CLAVE);
              db.AddInParameter(dbCommand, "@id_transaccion", DbType.Int32, idTransaccion);
              using (IDataReader dr = db.ExecuteReader(dbCommand))
              {
              while (dr.Read())
              {
                  obj = new InvTransaccionDTO();
                  if (dr["id_transaccion"] != System.DBNull.Value)
                      obj.IdTransaccion = (int)dr["id_transaccion"];
                  if (dr["id_articulo"] != System.DBNull.Value)
                      obj.IdArticulo = (int)dr["id_articulo"];
                  if (dr["id_almacen"] != System.DBNull.Value)
                      obj.IdAlmacen = (int)dr["id_almacen"];
                  if (dr["id_tipo_transaccion"] != System.DBNull.Value)
                      obj.IdTipoTransaccion = (int)dr["id_tipo_transaccion"];
                  if (dr["fecha"] != System.DBNull.Value)
                      obj.Fecha = (DateTime)dr["fecha"];
                  if (dr["cantidad"] != System.DBNull.Value)
                      obj.Cantidad = (Decimal)dr["cantidad"];
                  if (dr["costo_unitario"] != System.DBNull.Value)
                      obj.CostoUnitario = (Decimal)dr["costo_unitario"];
                  if (dr["costo"] != System.DBNull.Value)
                      obj.Costo = (Decimal)dr["costo"];
                  if (dr["tipo_origen"] != System.DBNull.Value)
                      obj.TipoOrigen = (string)dr["tipo_origen"];
                  if (dr["id_transaccion_origen"] != System.DBNull.Value)
                      obj.IdTransaccionOrigen = (int)dr["id_transaccion_origen"];
                  if (dr["id_linea_origen"] != System.DBNull.Value)
                      obj.IdLineaOrigen = (int)dr["id_linea_origen"];
                  if (dr["descripcion"] != System.DBNull.Value)
                      obj.Descripcion = (string)dr["descripcion"];

                  if (dr["id_sede"] != System.DBNull.Value)
                      obj.IdSede = (int)dr["id_sede"];

                  if (dr["id_proyecto"] != System.DBNull.Value)
                      obj.IdProyecto = (int)dr["id_proyecto"];

                  if (dr["fecha_vencimiento"] != System.DBNull.Value)
                      obj.FechaVencimiento = (DateTime)dr["fecha_vencimiento"];

                  if (dr["ubicacion"] != System.DBNull.Value)
                      obj.Ubicacion = (string)dr["ubicacion"];

                  if (dr["marca"] != System.DBNull.Value)
                      obj.Marca = (string)dr["marca"];

                  if (dr["modelo"] != System.DBNull.Value)
                      obj.Modelo = (string)dr["modelo"];

                  if (dr["serie"] != System.DBNull.Value)
                      obj.Serie = (string)dr["serie"];

                  if (dr["lote"] != System.DBNull.Value)
                      obj.Lote = (string)dr["lote"];

                  if (dr["observaciones_almacenamiento"] != System.DBNull.Value)
                      obj.ObservacionesAlmacenamiento = (string)dr["observaciones_almacenamiento"];

                  if (dr["id_usuario_creacion"] != System.DBNull.Value)
                      obj.IdUsuarioCreacion = (int)dr["id_usuario_creacion"];
                  if (dr["fecha_creacion"] != System.DBNull.Value)
                      obj.FechaCreacion = (DateTime)dr["fecha_creacion"];
                  if (dr["id_usuario_modificador"] != System.DBNull.Value)
                      obj.IdUsuarioModificador = (int)dr["id_usuario_modificador"];
                  if (dr["fecha_modificacion"] != System.DBNull.Value)
                      obj.FechaModificacion = (DateTime)dr["fecha_modificacion"];

                  Lista.Add(obj);
              }
              }
              return obj;
        }