Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/branches/R_10_00@21570 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
e3b1c64f21
commit
84473c9d53
@ -590,10 +590,6 @@ void TImporta_rilore_msk::importa()
|
||||
|
||||
TLocalisamfile rilore(LF_RILORE);
|
||||
|
||||
rilore.put(RILORE_TIPO, 'C');
|
||||
rilore.put(RILORE_TIPORA, 'A');
|
||||
rilore.put(RILORE_CODICE, recordset.get("MATR").as_string());
|
||||
|
||||
TString8 data = recordset.get("DADATA").as_string();
|
||||
TString4 anno = "20"; anno << data.right(2);
|
||||
const TDate dadata(atoi(data.left(2)), atoi(data.mid(2, 2)), atoi(anno));
|
||||
@ -602,19 +598,43 @@ void TImporta_rilore_msk::importa()
|
||||
anno = "20"; anno << data.right(2);
|
||||
|
||||
const TDate adata(atoi(data.left(2)), atoi(data.mid(2, 2)), atoi(anno));
|
||||
|
||||
for(int i = 1; i <= 31; i++)
|
||||
{
|
||||
rilore.put(RILORE_TIPO, 'C');
|
||||
rilore.put(RILORE_TIPORA, 'A');
|
||||
rilore.put(RILORE_CODICE, recordset.get("MATR").as_string());
|
||||
|
||||
TString4 giorno;
|
||||
|
||||
if(i < 10)
|
||||
giorno << '0';
|
||||
giorno << i;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//ON_FIELD_EVENT: metodo che gestisce gli eventi sui vari campi della maschera
|
||||
bool TImporta_rilore_msk::on_field_event(TOperable_field& f, TField_event e, long jolly)
|
||||
{
|
||||
switch (f.dlg())
|
||||
{
|
||||
switch (f.dlg())
|
||||
{
|
||||
case DLG_OK:
|
||||
{
|
||||
if(e == fe_button)
|
||||
{
|
||||
importa();
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
TImporta_rilore_rec::TImporta_rilore_rec()
|
||||
TImporta_rilore_msk::TImporta_rilore_msk()
|
||||
: TAutomask("ci2300a")
|
||||
{
|
||||
}
|
||||
@ -624,21 +644,21 @@ TImporta_rilore_rec::TImporta_rilore_rec()
|
||||
////////////////////////////////////////////
|
||||
|
||||
//classe TRilevamento_imp_app
|
||||
class TRilevamento_imp_app : public TSkeleton_application
|
||||
class TImporta_rilore__app : public TSkeleton_application
|
||||
{
|
||||
public:
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
void TRilevamento_imp_app::main_loop()
|
||||
void TImporta_rilore__app::main_loop()
|
||||
{
|
||||
TRilevamento_imp_msk msk;
|
||||
TImporta_rilore_msk msk;
|
||||
while (msk.run() != K_QUIT) ;
|
||||
}
|
||||
|
||||
int ci2300(int argc, char *argv[])
|
||||
{
|
||||
TRilevamento_imp_app a;
|
||||
TImporta_rilore__app a;
|
||||
a.run (argc, argv, TR("Importazione Ore"));
|
||||
return TRUE;
|
||||
}
|
77
ci/ci2300a.h
77
ci/ci2300a.h
@ -1,77 +1,2 @@
|
||||
//Campi maschera ci2300a
|
||||
#define F_ANNO 301
|
||||
#define F_MESE 302
|
||||
#define F_TPORA 303
|
||||
#define F_RISOATT 304
|
||||
#define F_CODICE 305
|
||||
#define F_CODRIS 306
|
||||
#define F_DESRIS 307
|
||||
#define F_CODATT 308
|
||||
#define F_DESATT 309
|
||||
#define F_CODCOSTO 310
|
||||
#define F_CODCMS 311
|
||||
#define F_CODFASE 312
|
||||
#define F_CALENDARIO 313
|
||||
#define F_ANAL 314
|
||||
#define F_SHEET 330
|
||||
|
||||
#define DLG_RESET 900
|
||||
#define DLG_CERCA 901
|
||||
#define DLG_DEFAULT 902
|
||||
|
||||
#define C_0 100
|
||||
#define C_1 101
|
||||
#define C_2 102
|
||||
#define C_3 103
|
||||
#define C_4 104
|
||||
#define C_5 105
|
||||
#define C_6 106
|
||||
#define C_7 107
|
||||
#define C_8 108
|
||||
#define C_9 109
|
||||
#define C_10 110
|
||||
#define C_11 111
|
||||
#define C_12 112
|
||||
#define C_13 113
|
||||
#define C_14 114
|
||||
#define C_15 115
|
||||
#define C_16 116
|
||||
#define C_17 117
|
||||
#define C_18 118
|
||||
#define C_19 119
|
||||
#define C_20 120
|
||||
#define C_21 121
|
||||
#define C_22 122
|
||||
#define C_23 123
|
||||
#define C_24 124
|
||||
#define C_25 125
|
||||
#define C_26 126
|
||||
#define C_27 127
|
||||
#define C_28 128
|
||||
#define C_29 129
|
||||
#define C_30 130
|
||||
#define C_31 131
|
||||
#define ID2DAY(ID) (ID - C_0)
|
||||
#define DAY2ID(DAY) (C_0 + DAY)
|
||||
|
||||
#define S_RISOATT 101
|
||||
#define S_CODRIS 102
|
||||
#define S_DESRIS 119
|
||||
#define S_CODATT 202
|
||||
#define S_DESATT 219
|
||||
#define S_TPORA 103
|
||||
#define S_CDC1 104
|
||||
#define S_CDC2 105
|
||||
#define S_CDC3 106
|
||||
#define S_CDC4 107
|
||||
#define S_CDC5 108
|
||||
#define S_CDC6 109
|
||||
#define S_CDC7 110
|
||||
#define S_CDC8 111
|
||||
#define S_CDC9 112
|
||||
#define S_CDC10 113
|
||||
#define S_CDC11 114
|
||||
#define S_CDC12 115
|
||||
#define S_QTAORE 116
|
||||
#define S_COSTO 117
|
||||
#define S_OREDIS 118
|
||||
#define F_FILE 201
|
||||
|
527
ci/ci2300a.uml
527
ci/ci2300a.uml
@ -2,527 +2,30 @@
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_DEFAULT
|
||||
BEGIN
|
||||
PROMPT 1 1 "Default"
|
||||
PICTURE TOOL_SMILE
|
||||
END
|
||||
|
||||
BUTTON DLG_CERCA
|
||||
BEGIN
|
||||
PROMPT 1 1 "Cerca"
|
||||
PICTURE TOOL_FINDREC
|
||||
END
|
||||
|
||||
BUTTON DLG_SAVEREC 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Salva"
|
||||
PICTURE TOOL_SAVEREC
|
||||
END
|
||||
|
||||
BUTTON DLG_RESET 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Azzera"
|
||||
PICTURE TOOL_RESET
|
||||
END
|
||||
|
||||
#include <helpbar.h>
|
||||
#include <elabar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Rilevazione consuntivi" 0 2 0 0
|
||||
PAGE "Importazione Ore" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
STRING DLG_PROFILE 50
|
||||
BEGIN
|
||||
PROMPT 1 0 "@bSelezione"
|
||||
PROMPT 9 -12 "Profilo "
|
||||
PSELECT
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 2 1 "Anno "
|
||||
FLAGS "A"
|
||||
PROMPT 1 1 "@bOrigine dati"
|
||||
END
|
||||
|
||||
STRING F_FILE 64
|
||||
BEGIN
|
||||
PROMPT 2 3 "Nome "
|
||||
FSELECT "*.*"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
LISTBOX F_MESE 10
|
||||
BEGIN
|
||||
PROMPT 24 1 "Mese "
|
||||
FLAGS "M"
|
||||
END
|
||||
|
||||
STRING F_TPORA 2
|
||||
BEGIN
|
||||
PROMPT 44 1 "Tipo ora "
|
||||
USE &ORE
|
||||
INPUT CODTAB F_TPORA
|
||||
DISPLAY "Codice@16" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TPORA CODTAB
|
||||
END
|
||||
|
||||
LISTBOX F_RISOATT 1 12
|
||||
BEGIN
|
||||
PROMPT 2 2 "@bTipo "
|
||||
ITEM "T|Tutti"
|
||||
MESSAGE SHOW,1@|HIDE,2@|HIDE,3@
|
||||
ITEM "R|Risorsa"
|
||||
MESSAGE HIDE,1@|SHOW,2@|HIDE,3@
|
||||
ITEM "A|Attrezzatura"
|
||||
MESSAGE HIDE,1@|HIDE,2@|SHOW,3@
|
||||
FLAGS "Z"
|
||||
END
|
||||
|
||||
STRING F_CODRIS 16
|
||||
BEGIN
|
||||
PROMPT 23 2 "Codice "
|
||||
USE RSS
|
||||
INPUT CODTAB F_CODRIS
|
||||
DISPLAY "Codice@16" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODRIS CODTAB
|
||||
OUTPUT F_DESRIS S0
|
||||
GROUP 2
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESRIS 50 27
|
||||
BEGIN
|
||||
PROMPT 50 2 ""
|
||||
FLAGS "D"
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_CODATT 16
|
||||
BEGIN
|
||||
PROMPT 23 2 "Codice "
|
||||
USE ATR
|
||||
INPUT CODTAB F_CODATT
|
||||
DISPLAY "Codice@16" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODATT CODTAB
|
||||
OUTPUT F_DESATT S0
|
||||
GROUP 3
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESATT 50 27
|
||||
BEGIN
|
||||
PROMPT 50 27 ""
|
||||
FLAGS "D"
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
SPREADSHEET F_CALENDARIO -16 2
|
||||
BEGIN
|
||||
PROMPT 1 7 ""
|
||||
ITEM "1@2"
|
||||
ITEM "2@2"
|
||||
ITEM "3@2"
|
||||
ITEM "4@2"
|
||||
ITEM "5@2"
|
||||
ITEM "6@2"
|
||||
ITEM "7@2"
|
||||
ITEM "8@2"
|
||||
ITEM "9@2"
|
||||
ITEM "10"
|
||||
ITEM "11"
|
||||
ITEM "12"
|
||||
ITEM "13"
|
||||
ITEM "14"
|
||||
ITEM "15"
|
||||
ITEM "16"
|
||||
ITEM "17"
|
||||
ITEM "18"
|
||||
ITEM "19"
|
||||
ITEM "20"
|
||||
ITEM "21"
|
||||
ITEM "22"
|
||||
ITEM "23"
|
||||
ITEM "24"
|
||||
ITEM "25"
|
||||
ITEM "26"
|
||||
ITEM "27"
|
||||
ITEM "28"
|
||||
ITEM "29"
|
||||
ITEM "30"
|
||||
ITEM "31"
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEET -15 0
|
||||
BEGIN
|
||||
PROMPT 1 10 ""
|
||||
ITEM "Tipo"
|
||||
ITEM "Codice@16"
|
||||
ITEM "Tipo\nOra@5"
|
||||
ITEM "CDC1"
|
||||
ITEM "CDC2"
|
||||
ITEM "CDC3"
|
||||
ITEM "CDC4"
|
||||
ITEM "CDC5"
|
||||
ITEM "CDC6"
|
||||
ITEM "CDC7"
|
||||
ITEM "CDC8"
|
||||
ITEM "CDC9"
|
||||
ITEM "CDC10"
|
||||
ITEM "CDC11"
|
||||
ITEM "CDC12"
|
||||
ITEM "Qta\nOre@5"
|
||||
ITEM "Costo@6"
|
||||
ITEM "Ore\ndisponibilità"
|
||||
ITEM "Descrizione@50"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
PAGE "Calendario" -1 -1 78 13
|
||||
|
||||
STRING C_1 1
|
||||
BEGIN
|
||||
PROMPT 2 4 " 1"
|
||||
END
|
||||
|
||||
STRING C_2 1
|
||||
BEGIN
|
||||
PROMPT 6 4 " 2"
|
||||
END
|
||||
|
||||
STRING C_3 1
|
||||
BEGIN
|
||||
PROMPT 10 4 " 3"
|
||||
END
|
||||
|
||||
STRING C_4 1
|
||||
BEGIN
|
||||
PROMPT 14 4 " 4"
|
||||
END
|
||||
|
||||
STRING C_5 1
|
||||
BEGIN
|
||||
PROMPT 18 4 " 5"
|
||||
END
|
||||
|
||||
STRING C_6 1
|
||||
BEGIN
|
||||
PROMPT 22 4 " 6"
|
||||
END
|
||||
|
||||
STRING C_7 1
|
||||
BEGIN
|
||||
PROMPT 26 4 " 7"
|
||||
END
|
||||
|
||||
STRING C_8 1
|
||||
BEGIN
|
||||
PROMPT 30 4 " 8"
|
||||
END
|
||||
|
||||
STRING C_9 1
|
||||
BEGIN
|
||||
PROMPT 34 4 " 9"
|
||||
END
|
||||
|
||||
STRING C_10 1
|
||||
BEGIN
|
||||
PROMPT 38 4 "10"
|
||||
END
|
||||
|
||||
STRING C_11 1
|
||||
BEGIN
|
||||
PROMPT 42 4 "11"
|
||||
END
|
||||
|
||||
STRING C_12 1
|
||||
BEGIN
|
||||
PROMPT 46 4 "12"
|
||||
END
|
||||
|
||||
STRING C_13 1
|
||||
BEGIN
|
||||
PROMPT 50 4 "13"
|
||||
END
|
||||
|
||||
STRING C_14 1
|
||||
BEGIN
|
||||
PROMPT 54 4 "14"
|
||||
END
|
||||
|
||||
STRING C_15 1
|
||||
BEGIN
|
||||
PROMPT 58 4 "15"
|
||||
END
|
||||
|
||||
STRING C_16 1
|
||||
BEGIN
|
||||
PROMPT 62 4 "16"
|
||||
END
|
||||
|
||||
STRING C_17 1
|
||||
BEGIN
|
||||
PROMPT 66 4 "17"
|
||||
END
|
||||
|
||||
STRING C_18 1
|
||||
BEGIN
|
||||
PROMPT 70 4 "18"
|
||||
END
|
||||
|
||||
STRING C_19 1
|
||||
BEGIN
|
||||
PROMPT 2 5 "19"
|
||||
END
|
||||
|
||||
STRING C_20 1
|
||||
BEGIN
|
||||
PROMPT 6 5 "20"
|
||||
END
|
||||
|
||||
STRING C_21 1
|
||||
BEGIN
|
||||
PROMPT 10 5 "21"
|
||||
END
|
||||
|
||||
STRING C_22 1
|
||||
BEGIN
|
||||
PROMPT 14 5 "22"
|
||||
END
|
||||
|
||||
STRING C_23 1
|
||||
BEGIN
|
||||
PROMPT 18 5 "23"
|
||||
END
|
||||
|
||||
STRING C_24 1
|
||||
BEGIN
|
||||
PROMPT 22 5 "24"
|
||||
END
|
||||
|
||||
STRING C_25 1
|
||||
BEGIN
|
||||
PROMPT 26 5 "25"
|
||||
END
|
||||
|
||||
STRING C_26 1
|
||||
BEGIN
|
||||
PROMPT 30 5 "26"
|
||||
END
|
||||
|
||||
STRING C_27 1
|
||||
BEGIN
|
||||
PROMPT 34 5 "27"
|
||||
END
|
||||
|
||||
STRING C_28 1
|
||||
BEGIN
|
||||
PROMPT 38 5 "28"
|
||||
END
|
||||
|
||||
STRING C_29 1
|
||||
BEGIN
|
||||
PROMPT 42 5 "29"
|
||||
END
|
||||
|
||||
STRING C_30 1
|
||||
BEGIN
|
||||
PROMPT 46 5 "30"
|
||||
END
|
||||
|
||||
STRING C_31 1
|
||||
BEGIN
|
||||
PROMPT 50 5 "31"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "" 0 0 0 2
|
||||
|
||||
BUTTON DLG_CANCEL 2 2
|
||||
BEGIN
|
||||
PROMPT 4 1 "Annulla"
|
||||
PICTURE TOOL_CANCEL
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
PAGE "Riga consuntivo" -1 -1 78 13
|
||||
|
||||
GROUPBOX DLG_NULL 76 12
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bRisorsa - Attrezzatura"
|
||||
END
|
||||
|
||||
RADIOBUTTON S_RISOATT 1 74
|
||||
BEGIN
|
||||
PROMPT 2 2 "@bTipo: "
|
||||
ITEM "R|Risorsa"
|
||||
MESSAGE SHOW,1@|HIDE,2@|RESET,2@
|
||||
ITEM "A|Attrezzatura"
|
||||
MESSAGE HIDE,1@|SHOW,2@|RESET,1@
|
||||
FLAGS "GZ"
|
||||
END
|
||||
|
||||
STRING S_CODRIS 16
|
||||
BEGIN
|
||||
PROMPT 2 5 "Codice Risorsa "
|
||||
USE RSS
|
||||
INPUT CODTAB S_CODRIS
|
||||
DISPLAY "Codice@16" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT S_CODRIS CODTAB
|
||||
OUTPUT S_DESRIS S0
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "G"
|
||||
GROUP 1
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING S_DESRIS 50
|
||||
BEGIN
|
||||
PROMPT 2 6 "Descrizione "
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING S_CODATT 16
|
||||
BEGIN
|
||||
PROMPT 2 5 "Codice Attrezzatura "
|
||||
USE ATR
|
||||
INPUT CODTAB S_CODATT
|
||||
DISPLAY "Codice@16" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT S_CODATT CODTAB
|
||||
OUTPUT S_DESATT S0
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "G"
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING S_DESATT 50
|
||||
BEGIN
|
||||
PROMPT 2 6 "Descrizione "
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING S_TPORA 2
|
||||
BEGIN
|
||||
PROMPT 59 7 "Tipo ora "
|
||||
USE &ORE
|
||||
INPUT CODTAB S_TPORA
|
||||
DISPLAY "Codice@16" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT S_TPORA CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING S_CDC1 20
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cdc 1"
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING S_CDC2 20
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cdc 2"
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING S_CDC3 20
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cdc 2"
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING S_CDC4 20
|
||||
BEGIN
|
||||
PROMPT 2 8 "Cdc 2"
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING S_CDC5 20
|
||||
BEGIN
|
||||
PROMPT 2 9 "Cdc 2"
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING S_CDC6 20
|
||||
BEGIN
|
||||
PROMPT 2 9 "Cdc 2"
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING S_CDC7 20
|
||||
BEGIN
|
||||
PROMPT 2 9 "Cdc 2"
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING S_CDC8 20
|
||||
BEGIN
|
||||
PROMPT 2 9 "Cdc 2"
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING S_CDC9 20
|
||||
BEGIN
|
||||
PROMPT 2 10 "Cdc 2"
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING S_CDC10 20
|
||||
BEGIN
|
||||
PROMPT 2 10 "Cdc 2"
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING S_CDC11 20
|
||||
BEGIN
|
||||
PROMPT 2 10 "Cdc 2"
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
STRING S_CDC12 20
|
||||
BEGIN
|
||||
PROMPT 2 10 "Cdc 2"
|
||||
FLAGS "HB"
|
||||
END
|
||||
|
||||
NUMBER S_QTAORE 6
|
||||
BEGIN
|
||||
PROMPT 2 11 "Quantità ore "
|
||||
END
|
||||
|
||||
NUMBER S_COSTO 6 2
|
||||
BEGIN
|
||||
PROMPT 30 11 "Prezzo "
|
||||
END
|
||||
|
||||
NUMBER S_OREDIS 6
|
||||
BEGIN
|
||||
PROMPT 50 11 "Quantità ore "
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_RESET 2 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Azzera"
|
||||
MESSAGE RESET,S_QTAORE
|
||||
PICTURE TOOL_RESET
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 2 2
|
||||
BEGIN
|
||||
PROMPT 4 1 "Annulla"
|
||||
PICTURE TOOL_CANCEL
|
||||
FIELD FILE
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
Loading…
x
Reference in New Issue
Block a user