#include Function Cliente Private aCliente:={} Private cliente_incluir:=.f. Private cliente_alterar:=.f. Private aGridOrdCli := { { || ChgOrdCli(1)}, { || ChgOrdCli(2)} } Load Window Cliente Cliente.Center Cliente.Activate Return(Nil) ******************************************************************************** Function bloqueia_tela_cliente cliente.txt_cnpj_cpf.Enabled := .f. cliente.txt_descricao.Enabled := .f. cliente.txt_cep.Enabled := .f. cliente.txt_ibge.Enabled := .f. cliente.txt_endereco.Enabled := .f. cliente.txt_numero.Enabled := .f. cliente.txt_complemento.Enabled := .f. cliente.txt_bairro.Enabled := .f. cliente.txt_cidade.Enabled := .f. cliente.txt_uf.Enabled := .f. cliente.txt_insc_rg.Enabled := .f. cliente.txt_telefone.Enabled := .f. cliente.txt_fax.Enabled := .f. cliente.txt_celular.Enabled := .f. cliente.txt_contato.Enabled := .f. cliente.txt_email.Enabled := .f. cliente.txt_email_nfe.Enabled := .f. cliente.grid_cliente.Enabled := .t. cliente.btn_incluir.Enabled := .t. cliente.btn_alterar.Enabled := .t. cliente.btn_excluir.Enabled := .t. cliente.btn_pesquisa.Enabled := .t. cliente.btn_sair.Enabled := .t. cliente.btn_gravar.Enabled := .f. cliente.btn_cancelar.Enabled := .f. Return(Nil) ******************************************************************************** Function desbloqueia_tela_cliente cliente.txt_cnpj_cpf.Enabled := .t. cliente.txt_descricao.Enabled := .t. cliente.txt_cep.Enabled := .t. cliente.txt_endereco.Enabled := .t. cliente.txt_numero.Enabled := .t. cliente.txt_complemento.Enabled := .t. cliente.txt_bairro.Enabled := .t. cliente.txt_cidade.Enabled := .t. cliente.txt_uf.Enabled := .t. cliente.txt_insc_rg.Enabled := .t. cliente.txt_telefone.Enabled := .t. cliente.txt_fax.Enabled := .t. cliente.txt_celular.Enabled := .t. cliente.txt_contato.Enabled := .t. cliente.txt_email.Enabled := .t. cliente.txt_email_nfe.Enabled := .t. cliente.grid_cliente.Enabled := .f. cliente.btn_incluir.Enabled := .f. cliente.btn_alterar.Enabled := .f. cliente.btn_excluir.Enabled := .f. cliente.btn_pesquisa.Enabled := .f. cliente.btn_sair.Enabled := .f. cliente.btn_gravar.Enabled := .t. cliente.btn_cancelar.Enabled := .t. Return(Nil) ******************************************************************************** Function cliente_form_oninit Local oQuery Local oRow Local i bloqueia_tela_cliente() cliente.grid_cliente.DeleteAllItems oQuery := oServer:Query("select * from cliente order by razao") for i := 1 To oQuery:LastRec() oRow := oQuery:GetRow(i) cliente.grid_cliente.additem({; oRow:fieldGet(01),; alltrim(oRow:fieldGet(02)),; transform(oRow:fieldGet(03),'@R 99999-999'),; oRow:fieldGet(04),; oRow:fieldGet(05),; oRow:fieldGet(06),; oRow:fieldGet(07),; oRow:fieldGet(08),; oRow:fieldGet(09),; oRow:fieldGet(10),; oRow:fieldGet(11),; transform(oRow:fieldGet(12),'@R (99)9999-9999'),; transform(oRow:fieldGet(13),'@R (99)9999-9999'),; transform(oRow:fieldGet(14),'@R (99)9999-9999'),; oRow:fieldGet(15),; oRow:fieldGet(16),; oRow:fieldGet(17)}) oQuery:Skip(1) next oQuery:Destroy() cliente.grid_cliente.SetFocus cliente.grid_cliente.Value := 1 Return(Nil) ******************************************************************************** Function cliente_grid_cliente_onchange Local aGridRow Local i i := cliente.grid_cliente.Value if i = 0 Return endif aGridRow := cliente.grid_cliente.Item (i) cliente.txt_cnpj_cpf.Value := iif(len(alltrim(aGridRow[01]))=14,transform(aGridRow[01],'@R 99.999.999/9999-99'),transform(aGridRow[01],'@R 999.999.999-99')) cliente.txt_descricao.Value := aGridRow[02] cliente.txt_cep.Value := aGridRow[03] cliente.txt_ibge.Value := aGridRow[04] cliente.txt_endereco.Value := aGridRow[05] cliente.txt_numero.Value := aGridRow[06] cliente.txt_complemento.Value := aGridRow[07] cliente.txt_bairro.Value := aGridRow[08] cliente.txt_cidade.Value := aGridRow[09] cliente.txt_uf.Value := aGridRow[10] cliente.txt_insc_rg.Value := aGridRow[11] cliente.txt_telefone.Value := aGridRow[12] cliente.txt_fax.Value := aGridRow[13] cliente.txt_celular.Value := aGridRow[14] cliente.txt_contato.Value := aGridRow[15] cliente.txt_email.Value := aGridRow[16] cliente.txt_email_nfe.Value := aGridRow[17] Return ******************************************************************************** Function cliente_btn_incluir_action desbloqueia_tela_cliente() cliente.txt_cnpj_cpf.Value := '' cliente.txt_descricao.Value := '' cliente.txt_cep.Value := '' cliente.txt_ibge.Value := '' cliente.txt_endereco.Value := '' cliente.txt_numero.Value := '' cliente.txt_complemento.Value := '' cliente.txt_bairro.Value := '' cliente.txt_cidade.Value := '' cliente.txt_uf.Value := '' cliente.txt_insc_rg.Value := '' cliente.txt_telefone.Value := '' cliente.txt_fax.Value := '' cliente.txt_celular.Value := '' cliente.txt_contato.Value := '' cliente.txt_email.Value := '' cliente.txt_email_nfe.Value := '' cliente.txt_cnpj_cpf.SetFocus cliente_incluir := .t. cliente_alterar := .f. Return(Nil) ******************************************************************************** Function cliente_btn_alterar_action desbloqueia_tela_cliente() cliente.txt_cnpj_cpf.Enabled := .f. cliente.txt_descricao.SetFocus cliente_alterar := .t. cliente_incluir := .f. Return(Nil) ******************************************************************************** Function cliente_btn_cancelar_action cliente_incluir := .f. cliente_alterar := .f. bloqueia_tela_cliente() cliente.grid_cliente.SetFocus cliente_grid_cliente_onchange() Return(Nil) ******************************************************************************** Function cliente_btn_gravar_action if cliente_incluir = .t. incluir_cliente() endif if cliente_alterar = .t. alterar_cliente() endif Return(Nil) ******************************************************************************** Function incluir_cliente Local oQuery Local oRow Local i Local c Local txt_cnpj_cpf,txt_descricao,txt_cep,txt_ibge,txt_endereco,txt_numero,txt_complemento,txt_bairro,txt_cidade,txt_uf,txt_insc_rg,txt_telefone,txt_fax,txt_celular,txt_contato,txt_email,txt_email_nfe oQuery := oServer:Query("select codigo from ibge where cidade = '"+alltrim(cliente.txt_cidade.Value)+"' and sigla = '"+alltrim(cliente.txt_uf.Value)+"'") for c := 1 To oQuery:LastRec() oRow := oQuery:GetRow(c) oQuery:Skip(c) next oQuery:Destroy() if empty(oRow) MsgBox("Verifique o nome da Cidade e o Estado") Return(cliente.txt_cidade.Setfocus) else cliente.txt_ibge.Value := alltrim(oRow:fieldGet(01)) endif txt_cnpj_cpf := strtran(strtran(strtran(cliente.txt_cnpj_cpf.Value,"."),"-"),"/") txt_descricao := cliente.txt_descricao.Value txt_cep := strtran(cliente.txt_cep.Value,"-") txt_ibge := cliente.txt_ibge.Value txt_endereco := cliente.txt_endereco.Value txt_numero := cliente.txt_numero.Value txt_complemento := cliente.txt_complemento.Value txt_bairro := cliente.txt_bairro.Value txt_cidade := cliente.txt_cidade.Value txt_uf := cliente.txt_uf.Value txt_insc_rg := cliente.txt_insc_rg.Value txt_telefone := strtran(strtran(strtran(cliente.txt_telefone.Value,"("),")"),"-") txt_fax := strtran(strtran(strtran(cliente.txt_fax.Value,"("),")"),"-") txt_celular := strtran(strtran(strtran(cliente.txt_celular.Value,"("),")"),"-") txt_contato := cliente.txt_contato.Value txt_email := cliente.txt_email.Value txt_email_nfe := cliente.txt_email_nfe.Value oQuery:=oServer:Query("insert into cliente values ('"+txt_cnpj_cpf+"','"+txt_descricao+"','"+txt_cep+"','"+txt_ibge+"','"+txt_endereco+"','"+txt_numero+"','"+txt_complemento+"','"+txt_bairro+"','"+txt_cidade+"','"+txt_uf+"','"+txt_insc_rg+"','"+txt_telefone+"','"+txt_fax+"','"+txt_celular+"','"+txt_contato+"','"+txt_email+"','"+txt_email_nfe+"')") oQuery:Destroy() cliente.grid_cliente.additem({cliente.txt_cnpj_cpf.Value,; cliente.txt_descricao.Value,; cliente.txt_cep.Value,; cliente.txt_ibge.Value,; cliente.txt_endereco.Value,; cliente.txt_numero.Value,; cliente.txt_complemento.Value,; cliente.txt_bairro.Value,; cliente.txt_cidade.Value,; cliente.txt_uf.Value,; cliente.txt_insc_rg.Value,; cliente.txt_telefone.Value,; cliente.txt_fax.Value,; cliente.txt_celular.Value,; cliente.txt_contato.Value,; cliente.txt_email.Value,; cliente.txt_email_nfe.Value}) ChgOrdCli(2) cliente.grid_cliente.SetFocus for i:=1 to cliente.grid_cliente.itemcount if cliente.grid_cliente.item(i)[1] = cliente.txt_cnpj_cpf.Value cliente.grid_cliente.Value := i endif next bloqueia_tela_cliente() cliente_incluir := .f. cliente_alterar := .f. Return(Nil) ******************************************************************************** Function alterar_cliente Local oQuery Local oRow Local i Local c Local txt_cnpj_cpf,txt_descricao,txt_cep,txt_ibge,txt_endereco,txt_numero,txt_complemento,txt_bairro,txt_cidade,txt_uf,txt_insc_rg,txt_telefone,txt_fax,txt_celular,txt_contato,txt_email,txt_email_nfe i := cliente.grid_cliente.Value if i = 0 Return endif oQuery := oServer:Query("select codigo from ibge where cidade = '"+alltrim(cliente.txt_cidade.Value)+"' and sigla = '"+alltrim(cliente.txt_uf.Value)+"'") for c := 1 To oQuery:LastRec() oRow := oQuery:GetRow(c) oQuery:Skip(c) next oQuery:Destroy() if empty(oRow) MsgBox("Verifique o nome da Cidade e o Estado") Return(cliente.txt_cidade.Setfocus) else cliente.txt_ibge.Value := alltrim(oRow:fieldGet(01)) endif txt_cnpj_cpf := strtran(strtran(strtran(cliente.txt_cnpj_cpf.Value,"."),"-"),"/") txt_descricao := cliente.txt_descricao.Value txt_cep := strtran(cliente.txt_cep.Value,"-") txt_ibge := cliente.txt_ibge.Value txt_endereco := cliente.txt_endereco.Value txt_numero := cliente.txt_numero.Value txt_complemento := cliente.txt_complemento.Value txt_bairro := cliente.txt_bairro.Value txt_cidade := cliente.txt_cidade.Value txt_uf := cliente.txt_uf.Value txt_insc_rg := cliente.txt_insc_rg.Value txt_telefone := strtran(strtran(strtran(cliente.txt_telefone.Value,"("),")"),"-") txt_fax := strtran(strtran(strtran(cliente.txt_fax.Value,"("),")"),"-") txt_celular := strtran(strtran(strtran(cliente.txt_celular.Value,"("),")"),"-") txt_contato := cliente.txt_contato.Value txt_email := cliente.txt_email.Value txt_email_nfe := cliente.txt_email_nfe.Value * cliente.text_1.Value:="update cliente set razao='"+txt_descricao+"',cep='"+txt_cep+"',ibge='"+txt_ibge+"',endereco='"+txt_endereco+"',numero='"+txt_numero+"',complemento='"+txt_complemento+"',bairro='"+txt_bairro+"',cidade='"+txt_cidade+"',uf='"+txt_uf+"',insc_rg='"+txt_insc_rg+"',telefone='"+txt_telefone+"',fax='"+txt_fax+"',celular='"+txt_celular+"',contato='"+txt_contato+"',email='"+txt_email+"',email_nfe='"+txt_email_nfe+"' where cnpj_cpf='"+strtran(strtran(strtran(cliente.txt_cnpj_cpf.Value,"."),"-"),"/")+"'" oQuery:=oServer:Query("update cliente set razao='"+txt_descricao+"',cep='"+txt_cep+"',ibge='"+txt_ibge+"',endereco='"+txt_endereco+"',numero='"+txt_numero+"',complemento='"+txt_complemento+"',bairro='"+txt_bairro+"',cidade='"+txt_cidade+"',uf='"+txt_uf+"',insc_rg='"+txt_insc_rg+"',telefone='"+txt_telefone+"',fax='"+txt_fax+"',celular='"+txt_celular+"',contato='"+txt_contato+"',email='"+txt_email+"',email_nfe='"+txt_email_nfe+"' where cnpj_cpf='"+strtran(strtran(strtran(cliente.txt_cnpj_cpf.Value,"."),"-"),"/")+"'") oQuery:Destroy() cliente.grid_cliente.Cell(i,02) := cliente.txt_descricao.Value cliente.grid_cliente.Cell(i,03) := cliente.txt_cep.Value cliente.grid_cliente.Cell(i,04) := cliente.txt_ibge.Value cliente.grid_cliente.Cell(i,05) := cliente.txt_endereco.Value cliente.grid_cliente.Cell(i,06) := cliente.txt_numero.Value cliente.grid_cliente.Cell(i,07) := cliente.txt_complemento.Value cliente.grid_cliente.Cell(i,08) := cliente.txt_bairro.Value cliente.grid_cliente.Cell(i,09) := cliente.txt_cidade.Value cliente.grid_cliente.Cell(i,10) := cliente.txt_uf.Value cliente.grid_cliente.Cell(i,11) := cliente.txt_insc_rg.Value cliente.grid_cliente.Cell(i,12) := cliente.txt_telefone.Value cliente.grid_cliente.Cell(i,13) := cliente.txt_fax.Value cliente.grid_cliente.Cell(i,14) := cliente.txt_celular.Value cliente.grid_cliente.Cell(i,15) := cliente.txt_contato.Value cliente.grid_cliente.Cell(i,16) := cliente.txt_email.Value cliente.grid_cliente.Cell(i,17) := cliente.txt_email_nfe.Value bloqueia_tela_cliente() ChgOrdCli(2) for i:=1 to cliente.grid_cliente.itemcount if cliente.grid_cliente.item(i)[1] = strtran(strtran(strtran(cliente.txt_cnpj_cpf.Value,"."),"-"),"/") cliente.grid_cliente.Value := i endif next cliente.grid_cliente.SetFocus cliente_alterar := .f. cliente_incluir := .f. Return(Nil) ******************************************************************************** ******************************************************************************** Function cliente_txt_cep_onlostfocus Local oQuery Local oRow Local i oQuery:=oServer:Query("select abrev_tipo,nome_log,extenso_ba,nome_local,uf_log from cep where cep8_log ='"+strtran(cliente.txt_cep.Value,"-")+"'") oRow := oQuery:GetRow(i) if !empty(oRow:fieldGet(1)) cliente.txt_endereco.Value := alltrim(oRow:fieldGet(1))+" "+alltrim(oRow:fieldGet(2)) cliente.txt_bairro.Value := alltrim(oRow:fieldGet(3)) cliente.txt_cidade.Value := alltrim(oRow:fieldGet(4)) cliente.txt_uf.Value := alltrim(oRow:fieldGet(5)) oQuery:Destroy() oQuery:=oServer:Query("select codigo from ibge where cidade ='"+alltrim(cliente.txt_cidade.Value)+"' and sigla = '"+alltrim(cliente.txt_uf.Value)+"'") oRow := oQuery:GetRow(i) cliente.txt_ibge.Value := alltrim(oRow:fieldGet(1)) oQuery:Destroy() else cliente.txt_endereco.Value := '' cliente.txt_bairro.Value := '' cliente.txt_cidade.Value := '' cliente.txt_uf.Value := '' cliente.txt_ibge.Value := '' oQuery:Destroy() endif Return(Nil) ******************************************************************************** Function cliente_txt_cnpj_cpf_onlostfocus Local oQuery Local oRow Local i if cliente_incluir = .t. oQuery:=oServer:Query("select * from cliente where cnpj_cpf = '"+strtran(cliente.txt_cnpj_cpf.Value,"-")+"'") oRow := oQuery:GetRow(i) if !empty(oRow:fieldGet(1)) cliente.txt_cnpj_cpf.Value := iif(len(alltrim(oRow:fieldGet(01)))=14,transform(oRow:fieldGet(01),'@R 99.999.999/9999-99'),transform(oRow:fieldGet(01),'@R 999.999.999-99')) cliente.txt_descricao.Value := oRow:fieldGet(02) cliente.txt_cep.Value := oRow:fieldGet(03) cliente.txt_ibge.Value := oRow:fieldGet(04) cliente.txt_endereco.Value := oRow:fieldGet(05) cliente.txt_numero.Value := oRow:fieldGet(06) cliente.txt_complemento.Value := oRow:fieldGet(07) cliente.txt_bairro.Value := oRow:fieldGet(08) cliente.txt_cidade.Value := oRow:fieldGet(09) cliente.txt_uf.Value := oRow:fieldGet(10) cliente.txt_insc_rg.Value := oRow:fieldGet(11) cliente.txt_telefone.Value := oRow:fieldGet(12) cliente.txt_fax.Value := oRow:fieldGet(13) cliente.txt_celular.Value := oRow:fieldGet(14) cliente.txt_contato.Value := oRow:fieldGet(15) cliente.txt_email.Value := oRow:fieldGet(16) cliente.txt_email_nfe.Value := oRow:fieldGet(17) cliente_incluir := .f. cliente_alterar := .t. endif endif Return(Nil) ******************************************************************************** Function cliente_btn_excluir_action Local oQuery Local i Local aCodigo i := cliente.grid_cliente.Value if i = 0 Return endif if MsgYesNo("Confirma exclusão do cliente "+alltrim(cliente.txt_descricao.Value)+"","Exclusão de Cliente") aCodigo:=strtran(strtran(strtran(cliente.txt_cnpj_cpf.Value,"."),"-"),"/") oQuery:=oServer:Query("delete from cliente where cnpj_cpf = '"+aCodigo+"'") cliente.grid_cliente.DeleteItem (i) endif cliente.grid_cliente.SetFocus cliente.grid_cliente.Value := i Return(Nil) ******************************************************************************** Function ChgOrdCli( nOrder ) Local aTemp := {} Local nX WAIT WINDOW "AGUARDE GRAVANDO CLIENTE E ORDENANDO" NOWAIT for nX := 1 to cliente.grid_cliente.ItemCount aadd( aTemp, cliente.grid_cliente.Item( nX ) ) next nX aTemp := asort( aTemp,,,{|a,b| a[nOrder]<=b[nOrder]} ) cliente.grid_cliente.DeleteAllItems for nX := 1 to len( aTemp ) cliente.grid_cliente.AddItem( aTemp[nX] ) next nX WAIT CLEAR Return(nil) ******************************************************************************** ******************************************************************************** ******************************************************************************** ********************************************************************************