/*
TITULO : SISTEMA DE GESTÇO DE COMERCIO
DATA : 09/03/2020
PROGRAMA : CADASTROCLIENTES_MARIADB.PRG
COMENTARIO : CADASTRO/RELATORIO (/Clientes)/
*/
//#pragma -w0
//#pragma -es0
#include "hwgui.ch"
#include "SEFAZ_CIDADE.CH"
#include "SEFAZ_UF.CH"
#define PDFCLASS_PORTRAIT 1
#define PDFCLASS_LANDSCAPE 2
#define PDFCLASS_TXT 3
#define PDFCLASS_ROLLS 4
***************************************************
FUNCTION CADASTROCLIENTES( oServer )
***************************************************
LOCAL oDlg ;
, oLabel1, oLabel4 ;
, oBrowse1 ;
, oToolbar1 ;
, oColuna, bColorBlock
MEMVAR->nCombo1:= 0
MEMVAR->cProgressKey:=""
MEMVAR->cConsulta:=""
MEMVAR->cAlvo_Consulta:="CLIENTES_NRAZ_SOC"
MEMVAR->aVENBLO:= {"0 - Liberado","1 - Bloqueado"}
MEMVAR->aISENTO:= {"1 - CONTRIBUINTE DE ICMS","2 - CONTRIBUINTE ISENTO","9 - NAO CONTRIBUINTE"}
******************************************************************************************************************************************************
INIT DIALOG oDlg TITLE "Cadastro de Clientes" ;
ICON MEMVAR->SGC_ICON ;
AT 0, 0 SIZE 1008,600 CLIPPER NOEXIT ;
ON INIT {|| onDlgInit( oDlg ) }
@ 4,70 BROWSE oBrowse1 ARRAY OF oDlg SIZE 1000,497 STYLE WS_BORDER + WS_VSCROLL +WS_HSCROLL ;
ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS ;
ON CLICK {|| oBrowse1_onClick( oDlg, oServer ) } ;
ON KEYDOWN {|oBrowse1,nKeyPress| oBrowse1_onKeyDown( oBrowse1,nKeyPress, oDlg, oServer ) }
oBrowse1:oStyleHead := HStyle():New( { 0xffffff, 0xbbbbbb }, 1,, 0.4, 16759929 )
oBrowse1:oFont := HFont():Add( '',0,-15,700,,,)
oBrowse1:freeze := 2
oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY CLIENTES_NRAZ_SOC LIMIT 500" )
oBrowse1:AddColumn( HColumn():New( "CODIGO",hwg_ColumnArBlock(),"C",09,0,.F.,,,,,,,,;
{|| oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY CLIENTES_UCLIENTE" ), MEMVAR->cAlvo_Consulta:="CLIENTES_UCLIENTE",obrowse1:Refresh(), hwg_WriteStatus( oDlg,3,"Ordem: CODIGO") } ,,,,))
oBrowse1:AddColumn( HColumn():New( "NOME CLIENTE",hwg_ColumnArBlock(),"C",65,0,.F.,,,,,,,,;
{|| oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY CLIENTES_NRAZ_SOC" ), MEMVAR->cAlvo_Consulta:="CLIENTES_NRAZ_SOC", obrowse1:Refresh(), hwg_WriteStatus( oDlg,3,"Ordem: NOME CLIENTE") } ,,,,))
oBrowse1:AddColumn( HColumn():New( "CPF/CNPJ",hwg_ColumnArBlock(),"C",18,0,.F.,,,,,,,,;
{|| oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY CLIENTES_CPFCGC"), MEMVAR->cAlvo_Consulta:="CLIENTES_CPFCGC", obrowse1:Refresh(), hwg_WriteStatus( oDlg,3,"Ordem: CPF/CNPJ") } ,,,,))
oBrowse1:AddColumn( HColumn():New( "FONE", hwg_ColumnArBlock(),"C",18,0,.F.,,,,,,,,;
{|| oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY CLIENTES_FONE"), MEMVAR->cAlvo_Consulta:="CLIENTES_FONE", obrowse1:Refresh(), hwg_WriteStatus( oDlg,3,"Ordem: FONE") } ,,,,))
oBrowse1:AddColumn( HColumn():New('E-Mail', hwg_ColumnArBlock() ,'C',60, 0 ,.F.,,,,,,,,))
oBrowse1:AddColumn( HColumn():New( "Insc.Estadual",hwg_ColumnArBlock(),"C",18,0,.F.,,, ) )
oBrowse1:AddColumn( HColumn():New( "TC",hwg_ColumnArBlock(),"C",4,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Logradouro",hwg_ColumnArBlock(),"C",60,0,.F., ) )
oBrowse1:AddColumn( HColumn():New( "Numero", hwg_ColumnArBlock(),'N',9,0,.F.,1,2, ) )
oBrowse1:AddColumn( HColumn():New( "Complemento",hwg_ColumnArBlock(),"C",60,0,.F., ) )
oBrowse1:AddColumn( HColumn():New('Bairro', hwg_ColumnArBlock() ,'C',60, 0 ,.F.,,,,,,,,,,,,,))
oBrowse1:AddColumn( HColumn():New('CEP', hwg_ColumnArBlock() ,'C',12, 0 ,.F.,,,,,,,,,,,,,))
oBrowse1:AddColumn( HColumn():New('Cod.Pais', hwg_ColumnArBlock() ,'C',7, 0 ,.F.,,,,,,,,,,,,,))
oBrowse1:AddColumn( HColumn():New('Pais', hwg_ColumnArBlock() ,'C',50, 0 ,.F.,,,,,,,,,,,,))
oBrowse1:AddColumn( HColumn():New('UF', hwg_ColumnArBlock() ,'C',4, 0 ,.F.,,,,,,,,,,,,))
oBrowse1:AddColumn( HColumn():New('Cod.Mun.', hwg_ColumnArBlock() ,'C',7, 0 ,.F.,,,,,,,,,,,,))
oBrowse1:AddColumn( HColumn():New('Municipio', hwg_ColumnArBlock() ,'C',50, 0 ,.F.,,,,,,,,,,,,))
oBrowse1:AddColumn( HColumn():New('Contato', hwg_ColumnArBlock() ,'C',50, 0 ,.F.,,,,,,,,,,,,))
oBrowse1:AddColumn( HColumn():New('Operador/Computador DATA/HORA', hwg_ColumnArBlock() ,'C',60, 0 ,.F.,,,,,,,,))
oBrowse1:AddColumn( HColumn():New('CLIENTES ID', hwg_ColumnArBlock() ,'N',14, 0 ,.F.,1,2,,,,,,;
{|| oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY CLIENTES_ID"), MEMVAR->cAlvo_Consulta:="CLIENTES_ID", obrowse1:Refresh(), hwg_WriteStatus( oDlg,3,"Ordem: CHAVE ID") } ,,,,))
bColorBlock := {|| {0,16777215,, } }
FOR EACH oColuna IN oBrowse1:aColumns
oColuna:bColorBlock := bColorBlock
NEXT
@ 1,-1 TOOLBAR oToolbar1 SIZE hwg_Getdesktopwidth(),43
oToolbar1:AddButton("CMDINSERT", , 0, 16, "Inclui" ,{||CADCLIENTES( oServer, , "INCLUIR" ), oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY " + MEMVAR->cAlvo_Consulta ), obrowse1:REFRESH()},'Incluir novo Cliente','', "oToolbutton1")
oToolbar1:AddButton("CMDEDIT", , 0, 16, "Altera" ,{||CADCLIENTES( oServer, LTRIM(str(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 20])), "ALTERAR" ), oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY " + MEMVAR->cAlvo_Consulta ), obrowse1:REFRESH()},'Altera os dados do Cliente','', "oToolbutton2")
oToolbar1:AddButton("CMDDELETE", , 0, 16, "Exclui" ,{||CADCLIENTES_EXCLUI( oDlg, oServer ), oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY " + MEMVAR->cAlvo_Consulta ), obrowse1:REFRESH() },'Exclui os dados do Cliente','', "oToolbutton3")
// oToolbar1:AddButton("CLFLBMP", , 4, 16, "Consulta" ,{||CONSULTACADCLIENTES( )},'Consulta dados do Cadastro de Clientes','', "oToolbutton5")
oToolbar1:AddButton("rel_print",, 4, 128, "Relatórios" ,,, {{"Cadastro de Clientes ", 4,{|| RELATORIO_CLIENTES( oServer ) }}};
, "oToolbutton6")
oToolbar1:AddButton("EXIT16BMP", , 4, 16, "Sair" ,{|| oDlg:Close() },'Sair da rotina','', "oToolbutton7")
oToolbar1:CreateTool()
ADD STATUS PANEL TO oDlg HEIGHT 30 PARTS 200,120,300
@ 4,45 SAY oLabel1 CAPTION "Pesquisar" SIZE 138,25 ;
STYLE SS_CENTER +WS_DLGFRAME
@ 150,45 SAY oLabel4 CAPTION "" SIZE 410,25 ;
STYLE WS_BORDER;
COLOR 16777215 BACKCOLOR 255
ACTIVATE DIALOG oDlg CENTER
RETURN NIL
******************************************************************
STATIC FUNCTION CARREGA_CLIENTES( oServer, cAlvo_Consulta )
******************************************************************
LOCAL aResult :={};
, oQuery;
, cQuery
cQuery := "SELECT CLIENTES_UCLIENTE, ";
+ "CLIENTES_NRAZ_SOC, ";
+ "CLIENTES_CPFCGC, ";
+ "CLIENTES_FONE, ";
+ "CLIENTES_EMAIL, ";
+ "CLIENTES_INSEST, ";
+ "CLIENTES_ISENTO, ";
+ "CLIENTES_ENDER, ";
+ "CLIENTES_NUMERO, ";
+ "CLIENTES_COMPLEM, ";
+ "CLIENTES_BAIR, ";
+ "CLIENTES_CEP, ";
+ "CLIENTES_CODPAIS, ";
+ "CLIENTES_PAIS, ";
+ "CLIENTES_UF, ";
+ "CLIENTES_CODMUN, ";
+ "CLIENTES_CIDADE, ";
+ "CLIENTES_CONTATO, ";
+ "CLIENTES_QUEM_BLOQ, ";
+ "CLIENTES_ID ";
+ "from CLIENTES ";
+ cAlvo_Consulta
oQuery := oServer:Execute(cQuery)
DO WHILE ! oQuery:Eof()
aAdd( aResult, {oQuery:Fields( "CLIENTES_UCLIENTE" ):Value,;
oQuery:Fields( "CLIENTES_NRAZ_SOC" ):Value,;
oQuery:Fields( "CLIENTES_CPFCGC" ):Value,;
oQuery:Fields( "CLIENTES_FONE" ):Value,;
oQuery:Fields( "CLIENTES_EMAIL" ):Value,;
oQuery:Fields( "CLIENTES_INSEST" ):Value,;
oQuery:Fields( "CLIENTES_ISENTO" ):Value,;
oQuery:Fields( "CLIENTES_ENDER" ):Value,;
oQuery:Fields( "CLIENTES_NUMERO" ):Value,;
oQuery:Fields( "CLIENTES_COMPLEM" ):Value,;
oQuery:Fields( "CLIENTES_BAIR" ):Value,;
oQuery:Fields( "CLIENTES_CEP" ):Value,;
oQuery:Fields( "CLIENTES_CODPAIS" ):Value,;
oQuery:Fields( "CLIENTES_PAIS" ):Value,;
oQuery:Fields( "CLIENTES_UF" ):Value,;
oQuery:Fields( "CLIENTES_CODMUN" ):Value,;
oQuery:Fields( "CLIENTES_CIDADE" ):Value,;
oQuery:Fields( "CLIENTES_CONTATO" ):Value,;
oQuery:Fields( "CLIENTES_QUEM_BLOQ" ):Value,;
oQuery:Fields( "CLIENTES_ID" ):Value} )
oQuery:MoveNext()
ENDDO
oQuery:Close()
RETURN aResult
******************************************************************
STATIC FUNCTION onDlgInit( oDlg )
******************************************************************
oDlg:oToolbar1:oToolbutton1:ENABLE()
oDlg:oToolbar1:oToolbutton2:ENABLE()
IF strzero(M->NIV_ACESSO,1,0)$"689"
oDlg:oToolbar1:oToolbutton3:ENABLE()
ENDIF
hwg_WriteStatus( oDlg,1,"Tabela: CLIENTES")
hwg_WriteStatus( oDlg,3,"Ordem: NOME CLIENTE")
RETURN Nil
******************************************************
STATIC FUNCTION CADCLIENTES_EXCLUI( oDlg, oServer )
******************************************************
LOCAL cQuery;
, cQuery1;
IF hwg_MsgYesNo("DESEJA excluir o Cliente, Tem certeza disso ?","Excluindo Cliente")
cQuery1:="DELETE FROM clientes WHERE CLIENTES_Id='" + LTRIM(str(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 20])) + "'"
oServer:Execute(cQuery1)
cQuery:=[INSERT INTO logtrans (LOGTRANS_OPERADOR, LOGTRANS_COMPUTADOR, LOGTRANS_TEXTO ) VALUES ( "] + M->OPERADOR + [", "] + rtrim(hwg_GetComputerName()) + [", "] + cQuery1 + (oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 2]) + [")]
oServer:Execute(cQuery)
ENDIF
RETURN NIL
***********************************************************
STATIC FUNCTION oBrowse1_onClick( oDlg, oServer )
***********************************************************
IF hwg_LastKey() == MK_LBUTTON
CADCLIENTES( oServer, LTRIM(str(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 20])), "CONSULTAR" )
oDlg:oBrowse1:Refresh()
ENDIF
RETURN .T.
*******************************************************************
STATIC FUNCTION oBrowse1_onKeyDown( oBrowse1, nKey, oDlg, oServer )
*******************************************************************
LOCAL nPosicao:=0;
, nKeyPress:=nkey;
, cConsulta;
KSETCAPS(.T.);
IF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ "34|33|37|38|39|40|20|16"
MEMVAR->cProgressKey:=""
oDlg:oLabel4:settext(MEMVAR->cProgressKey)
RETURN .T.
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [90]
nKeyPress := 90
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [96]
nKeyPress := 48
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [97]
nKeyPress := 49
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [98]
nKeyPress := 50
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [99]
nKeyPress := 51
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [100]
nKeyPress := 52
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [101]
nKeyPress := 53
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [102]
nKeyPress := 54
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [103]
nKeyPress := 55
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [104]
nKeyPress := 56
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [105]
nKeyPress := 57
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [106]
nKeyPress := 42
ELSEIF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ [190]
nKeyPress := 46
ELSEIF nKeyPress == Asc("8") .AND. hwg_isCtrlShift( .F.,.T. )
nKeyPress := 42
ENDIF
IF nKeyPress = VK_RETURN
CADCLIENTES( oServer, LTRIM(str(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 20])), "CONSULTAR" )
oDlg:oBrowse1:Refresh()
RETURN .T.
ELSEIF nKeyPress = VK_ESCAPE
oDlg:Close()
RETURN .T.
ENDIF
If nKeyPress # 8
MEMVAR->cProgressKey += Chr(nKeyPress)
nPosicao:=AScan(oDlg:oBrowse1:aArray,MEMVAR->cProgressKey)
oDlg:oLabel4:settext(MEMVAR->cProgressKey)
cConsulta:= "WHERE " + MEMVAR->cAlvo_Consulta + " LIKE '" + MEMVAR->cProgressKey + "%'" + " ORDER BY " + MEMVAR->cAlvo_Consulta
oBrowse1:aArray := CARREGA_CLIENTES( oServer, cConsulta )
oDlg:obrowse1:REFRESH()
ELSEIF nKeyPress = 8 .AND. Len(MEMVAR->cProgressKey) >= 1
MEMVAR->cProgressKey:=Left(MEMVAR->cProgressKey,Len(MEMVAR->cProgressKey) - 1)
nPosicao:=AScan(oDlg:oBrowse1:aArray,MEMVAR->cProgressKey)
oDlg:oLabel4:settext(MEMVAR->cProgressKey)
cConsulta:= "WHERE " + MEMVAR->cAlvo_Consulta + " LIKE '" + MEMVAR->cProgressKey + "%'" + " ORDER BY " + MEMVAR->cAlvo_Consulta
oBrowse1:aArray := CARREGA_CLIENTES( oServer, cConsulta )
oDlg:obrowse1:REFRESH()
ENDIF
IF nPosicao # 0
cConsulta:= "WHERE " + MEMVAR->cAlvo_Consulta + " LIKE '" + MEMVAR->cProgressKey + "%'" + " ORDER BY " + MEMVAR->cAlvo_Consulta
oBrowse1:aArray := CARREGA_CLIENTES( oServer, cConsulta )
oDlg:obrowse1:REFRESH()
ENDIF
return .T.
***********************************************************
STATIC FUNCTION CADCLIENTES( oServer, cClientes_Id, cAcao )
***********************************************************
LOCAL oDlg;
, oLine1;
, oEdit1, oEdit2, oEdit3, oEdit4, oEdit5, oEdit6, oEdit7, oEdit8, oEdit9, oEdit10, oEdit11, oEdit12, oEdit13, oEdit14 ;
, oEdit18;
, oLabel1, oLabel2, oLabel3, oLabel4, oLabel5, oLabel6, oLabel7, oLabel8, oLabel9, oLabel10, oLabel11, oLabel12, oLabel13, oLabel14, oLabel15 ;
, oLabel16, oLabel17, oLabel18, oLabel19, oLabel20, oLabel21, oLabel23, oLabel24, oLabel25 ;
, oOwnerbutton1, oOwnerbutton2, oOwnerbutton4;
, oCombo1, oCombo2, oCombo3, oCombo4, oCombo6 ;
, oLink1, oLink2 ;
, oPAIS, oUF, oCIDADE;
, oQuery;
, cQuery;
, oGroup1;
MEMVAR->aPAIS:= {}
MEMVAR->aUF:= {}
MEMVAR->aMunicipios:= {}
MEMVAR->nCombo1 := 1
MEMVAR->nCombo2 := 1
MEMVAR->nCombo3 := 1
MEMVAR->nCombo4 := 1
MEMVAR->nCombo5 := 1
MEMVAR->nCombo6 := 1
hb_Default( @cAcao, "CONSULTAR" )
hb_Default( @cClientes_Id, "0" )
IF cAcao = "INCLUIR"
MEMVAR->ID :=0
MEMVAR->TIPCLI :=1
MEMVAR->NRAZ_SOC :=SPACE(60)
MEMVAR->TIPDOC :=1
MEMVAR->CPFCGC :=SPACE(18)
MEMVAR->CPFANT :="999999999999999999"
MEMVAR->INSEST :=SPACE(18)
MEMVAR->INSMUN :=SPACE(18)
MEMVAR->ISENTO :=SPACE(01)
MEMVAR->SUFRAMA :=SPACE(18)
MEMVAR->EMAIL :=SPACE(60)
MEMVAR->ENDER :=SPACE(60)
MEMVAR->NUMERO :=0
MEMVAR->COMPLEM :=SPACE(60)
MEMVAR->BAIR :=SPACE(50)
MEMVAR->CEP :=space(09)
MEMVAR->CODPAIS :="1058"
MEMVAR->PAIS :="BRASIL"
MEMVAR->UF :="AC"
MEMVAR->CIDADE :="RIO BRANCO"
MEMVAR->CODMUN :="1200401"
MEMVAR->FONE :=SPACE(14)
MEMVAR->CONTATO :=SPACE(80)
MEMVAR->LIMCRE :=0.00
MEMVAR->TOTCRE :=0.00
MEMVAR->VENBLO :="1"
MEMVAR->DATCAD :=M->DAT_HOJE
MEMVAR->DATALT :=M->DAT_HOJE
MEMVAR->USUALT :=M->OPERADOR
MEMVAR->TAXCLI :=0.00
MEMVAR->NUMPAR :=0.00
MEMVAR->PERDES :=0.00
MEMVAR->VALMIN :=0.00
ELSE
cQuery := "SELECT CLIENTES_ID, ";
+ "CLIENTES_TIPCLI, ";
+ "CLIENTES_NRAZ_SOC, ";
+ "CLIENTES_TIPDOC, ";
+ "CLIENTES_CPFCGC, ";
+ "CLIENTES_INSEST, ";
+ "CLIENTES_INSMUN, ";
+ "CLIENTES_ISENTO, ";
+ "CLIENTES_SUFRAMA, ";
+ "CLIENTES_EMAIL, ";
+ "CLIENTES_ENDER, ";
+ "CLIENTES_NUMERO, ";
+ "CLIENTES_COMPLEM, ";
+ "CLIENTES_BAIR, ";
+ "CLIENTES_CEP, ";
+ "CLIENTES_CODPAIS, ";
+ "CLIENTES_PAIS, ";
+ "CLIENTES_UF, ";
+ "CLIENTES_CIDADE, ";
+ "CLIENTES_CODMUN, ";
+ "CLIENTES_FONE, ";
+ "CLIENTES_CONTATO, ";
+ "CLIENTES_LIMCRE, ";
+ "CLIENTES_TOTCRE, ";
+ "CLIENTES_VENBLO, ";
+ "CLIENTES_DATCAD, ";
+ "CLIENTES_DATALT, ";
+ "CLIENTES_USUALT, ";
+ "CLIENTES_TAXCLI, ";
+ "CLIENTES_NUMPAR, ";
+ "CLIENTES_PERDES, ";
+ "CLIENTES_VALMIN ";
+ "FROM CLIENTES ";
+ "WHERE CLIENTES_ID = ";
+ "'" + cClientes_Id + "'"
oQuery := oServer:Execute(cQuery)
MEMVAR->ID :=cClientes_Id
MEMVAR->TIPCLI :=VAL(oQuery:Fields( "CLIENTES_TIPCLI" ):Value)
MEMVAR->NRAZ_SOC :=oQuery:Fields( "CLIENTES_NRAZ_SOC" ):Value
MEMVAR->TIPDOC :=VAL(oQuery:Fields( "CLIENTES_TIPDOC" ):Value)
MEMVAR->CPFCGC :=oQuery:Fields( "CLIENTES_CPFCGC" ):Value
MEMVAR->INSEST :=oQuery:Fields( "CLIENTES_INSEST" ):Value
MEMVAR->INSMUN :=oQuery:Fields( "CLIENTES_INSMUN" ):Value
MEMVAR->ISENTO :=oQuery:Fields( "CLIENTES_ISENTO" ):Value
MEMVAR->SUFRAMA :=oQuery:Fields( "CLIENTES_SUFRAMA" ):Value
MEMVAR->EMAIL :=oQuery:Fields( "CLIENTES_EMAIL" ):Value
MEMVAR->ENDER :=oQuery:Fields( "CLIENTES_ENDER" ):Value
MEMVAR->NUMERO :=oQuery:Fields( "CLIENTES_NUMERO" ):Value
MEMVAR->COMPLEM :=oQuery:Fields( "CLIENTES_COMPLEM" ):Value
MEMVAR->BAIR :=oQuery:Fields( "CLIENTES_BAIR" ):Value
MEMVAR->CEP :=oQuery:Fields( "CLIENTES_CEP" ):Value
MEMVAR->CODPAIS :=oQuery:Fields( "CLIENTES_CODPAIS" ):Value
MEMVAR->PAIS :=oQuery:Fields( "CLIENTES_PAIS" ):Value
MEMVAR->UF :=oQuery:Fields( "CLIENTES_UF" ):Value
MEMVAR->CIDADE :=oQuery:Fields( "CLIENTES_CIDADE" ):Value
MEMVAR->CODMUN :=oQuery:Fields( "CLIENTES_CODMUN" ):Value
MEMVAR->FONE :=oQuery:Fields( "CLIENTES_FONE" ):Value
MEMVAR->CONTATO :=oQuery:Fields( "CLIENTES_CONTATO" ):Value
MEMVAR->LIMCRE :=oQuery:Fields( "CLIENTES_LIMCRE" ):Value
MEMVAR->TOTCRE :=oQuery:Fields( "CLIENTES_TOTCRE" ):Value
MEMVAR->VENBLO :=oQuery:Fields( "CLIENTES_VENBLO" ):Value
MEMVAR->DATCAD :=oQuery:Fields( "CLIENTES_DATCAD" ):Value
MEMVAR->DATALT :=M->DAT_HOJE
MEMVAR->USUALT :=M->OPERADOR
MEMVAR->TAXCLI :=oQuery:Fields( "CLIENTES_TAXCLI" ):Value
MEMVAR->NUMPAR :=oQuery:Fields( "CLIENTES_NUMPAR" ):Value
MEMVAR->PERDES :=oQuery:Fields( "CLIENTES_PERDES" ):Value
MEMVAR->VALMIN :=oQuery:Fields( "CLIENTES_VALMIN" ):Value
MEMVAR->CPFANT :=MEMVAR->CPFCGC
ENDIF
FOR EACH oPAIS IN SEFAZ_CIDADE
IF oPAIS[1] == "EX"
AAdd(MEMVAR->aPAIS,oPAIS[3])
ENDIF
NEXT
FOR EACH oUF IN SEFAZ_UF
AAdd(MEMVAR->aUF,oUF[1])
NEXT
FOR EACH oCIDADE IN SEFAZ_CIDADE
IF oCIDADE[1] == MEMVAR->UF
AAdd(MEMVAR->aMunicipios,oCIDADE[3])
ENDIF
NEXT
********************************************************************************
INIT DIALOG oDlg TITLE "Cadastro de Cliente - "+cAcao ;
ICON MEMVAR->SGC_ICON ;
AT 0, 0 SIZE 1008,600 CLIPPER NOEXIT
hwg_SetColorinFocus( oDlg,, 13172680 )
@ 0,175 LINE oLine1 LENGTH 1008
oLine1:Anchor := 11
@ 415,15 SAY oLink1 CAPTION "http://www.sintegra.gov.br" ;
LINK 'http://www.sintegra.gov.br/new_bv.html' SIZE 180,22
@ 79,17 SAY oLabel2 CAPTION "CNPJ/CPF" SIZE 67,21
@ 150,15 GET oEdit2 VAR MEMVAR->CPFCGC SIZE 201,24 ;
STYLE ES_LEFT MAXLENGTH 14 VALID {|| VERIFICA_CPFCNPJ( oServer, MEMVAR->CPFCGC, MEMVAR->CPFANT, cAcao ) }
@ 16,49 SAY oLabel1 CAPTION "Nome/Razão Social" SIZE 131,21
@ 150,47 GET oEdit1 VAR MEMVAR->NRAZ_SOC SIZE 657,24 STYLE ES_UPPERCASE PICTURE '@!' MAXLENGTH 60 VALID {|| VERIFICA_NRAZ_SOC( oDlg, cAcao ) }
oEdit1:Anchor := 11
@ 25,81 SAY oLabel3 CAPTION "Inscrição Estadual" SIZE 122,21
@ 150,79 GET oEdit3 VAR MEMVAR->INSEST SIZE 202,24 ;
STYLE ES_LEFT MAXLENGTH 15 ;
VALID {|| VERIFICA_INCRICAO_ESTADUAL( ) }
@ 404,81 SAY oLabel7 CAPTION "Tipo Contribuinte" SIZE 112,21
@ 521,79 GET COMBOBOX oCombo1 VAR MEMVAR->nCombo1 ;
ITEMS MEMVAR->aISENTO ;
SIZE 218,24
@ 18,113 SAY oLabel4 CAPTION "Inscrição Municipal" SIZE 128,21
@ 150,111 GET oEdit4 VAR MEMVAR->INSMUN SIZE 202,24 ;
STYLE ES_RIGHT MAXLENGTH 15
@ 397,113 SAY oLabel5 CAPTION "Inscrição Suframa" SIZE 119,21
@ 521,111 GET oEdit5 VAR MEMVAR->SUFRAMA SIZE 201,24 ;
STYLE ES_RIGHT MAXLENGTH 15
@ 101,146 SAY oLabel6 CAPTION "E-Mail" SIZE 43,21
@ 149,144 GET oEdit6 VAR MEMVAR->EMAIL SIZE 657,24 STYLE ES_LOWERCASE MAXLENGTH 60
oEdit6:Anchor := 11
@ 69,185 SAY oLabel9 CAPTION "CEP" SIZE 29,24
@ 105,183 GET oEdit8 VAR MEMVAR->CEP SIZE 80,24 STYLE ES_RIGHT PICTURE '99999-999' MAXLENGTH 9
@ 246,187 SAY oLink2 CAPTION "http://www.correios.com.br" ;
LINK 'http://www.buscacep.correios.com.br/sistemas/buscacep/buscaEndereco.cfm' SIZE 181,22
@ 22,216 SAY oLabel10 CAPTION "Logradouro" SIZE 76,24
@ 105,214 GET oEdit9 VAR MEMVAR->ENDER SIZE 703,24 STYLE ES_UPPERCASE PICTURE '@!' MAXLENGTH 60
oEdit9:Anchor := 11
@ 45,248 SAY oLabel11 CAPTION "Numero" SIZE 53,21
@ 105,246 GET oEdit11 VAR MEMVAR->NUMERO SIZE 80,24 ;
STYLE ES_RIGHT MAXLENGTH 20
@ 7,280 SAY oLabel8 CAPTION "Complemento" SIZE 91,24
@ 104,278 GET oEdit7 VAR MEMVAR->COMPLEM SIZE 490,24 STYLE ES_UPPERCASE PICTURE '@!' MAXLENGTH 60
@ 56,311 SAY oLabel12 CAPTION "Bairro" SIZE 42,24
@ 105,309 GET oEdit13 VAR MEMVAR->BAIR SIZE 490,24 STYLE ES_UPPERCASE PICTURE '@!' MAXLENGTH 50
@ 67,341 SAY oLabel13 CAPTION "Pais" SIZE 31,24
@ 105,339 GET COMBOBOX oCombo4 VAR MEMVAR->nCombo4 ;
ITEMS MEMVAR->aPAIS ;
SIZE 259,24 DISPLAYCOUNT 8
@ 78,376 SAY oLabel14 CAPTION "UF" SIZE 20,24
@ 105,374 GET COMBOBOX oCombo2 VAR MEMVAR->nCombo2 ;
ITEMS MEMVAR->aUF ;
SIZE 65,24 DISPLAYCOUNT 8 ;
ON CHANGE {|| oCombo3:SetItem( Ascan(CARREGA_MUNICIPIOS( MEMVAR->aUF[MEMVAR->nCombo2] ),RTRIM(MEMVAR->CIDADE) ) ), oCombo3:REFRESH() }
@ 33,407 SAY oLabel15 CAPTION "Municipio" SIZE 65,24
@ 105,405 GET COMBOBOX oCombo3 VAR MEMVAR->nCombo3 ITEMS MEMVAR->aMunicipios ;
SIZE 259,24 DISPLAYCOUNT 7
@ 40,436 SAY oLabel16 CAPTION "Telefone" SIZE 58,24
@ 105,434 GET oEdit10 VAR MEMVAR->FONE SIZE 260,24 MAXLENGTH 14 ;
VALID {|| VERIFICA_TELEFONE( ) }
@ 47,465 SAY oLabel17 CAPTION "Contato" SIZE 51,24
@ 105,463 GET oEdit14 VAR MEMVAR->CONTATO SIZE 495,24 MAXLENGTH 80
@ 355,14 OWNERBUTTON oOwnerbutton1 SIZE 24,24 ;
TEXT '' ;
COORDINATES 0, 0, 0, 0 ;
BITMAP 'FINDBMP' FROM RESOURCE TRANSPARENT;
COORDINATES 0, 0, 0, 0 ;
ON CLICK {|| oEdit2:setfocus(), CADASTROCLIENTES_CONSULTA_CNPJ( oDlg, oServer ) }
@ 191,183 OWNERBUTTON oOwnerbutton4 SIZE 24,24 ;
TEXT '' ;
COORDINATES 0, 0, 0, 0 ;
BITMAP 'FINDBMP' FROM RESOURCE TRANSPARENT;
COORDINATES 0, 0, 0, 0 ;
ON CLICK {|| oEdit8:setfocus(), CADASTROCLIENTES_CONSULTA_CEP( oDlg, MEMVAR->CEP )}
IF cAcao != "CONSULTAR"
@ 904,560 OWNERBUTTON oOwnerbutton2 SIZE 98,32 DISABLED ;
TEXT 'Salvar' ;
COORDINATES 30, 0, 0, 0 ;
BITMAP 'APPLYBMP' FROM RESOURCE TRANSPARENT;
COORDINATES 5, 0, 0, 0;
ON CLICK {|| SALVA_CLIENTES( oServer, cClientes_Id, cAcao ), hwg_Enddialog() }
oOwnerbutton2:Anchor := 12
ENDIF
@ 830,240 GROUPBOX oGroup1 CAPTION "" SIZE 173,267
@ 840,251 SAY oLabel21 CAPTION "Faturamento" SIZE 110,21
@ 840,272 GET COMBOBOX oCombo6 VAR MEMVAR->nCombo6 ITEMS MEMVAR->aVENBLO SIZE 154,24 ;
ON CHANGE {|| oCombo6_onChange( oDlg, oCombo6:GETTEXT( ) ) }
@ 840,297 SAY oLabel23 CAPTION "Limite de crédito" SIZE 110,21
@ 840,319 GET oEdit18 VAR MEMVAR->LIMCRE SIZE 154,24 ;
STYLE ES_RIGHT +WS_DISABLED PICTURE '@E 999,999,999.99' MAXLENGTH 14
@ 840,344 SAY oLabel18 CAPTION "Utilizado" SIZE 60,21
@ 840,366 GET oEdit12 VAR MEMVAR->TOTCRE SIZE 154,24 ;
STYLE ES_RIGHT+WS_DISABLED PICTURE '@E 999,999,999.99' MAXLENGTH 14
@ 840,392 SAY oLabel19 CAPTION "Data Inclusão" SIZE 91,21 ;
@ 840,415 SAY oLabel24 CAPTION dtoc(MEMVAR->DATCAD) SIZE 154,30 ;
STYLE WS_BORDER+SS_CENTER ;
COLOR 16777215 BACKCOLOR 255 ;
FONT HFont():Add( '',0,-21,400,,,)
@ 840,449 SAY oLabel20 CAPTION "Data ultima Alteração" SIZE 141,21 ;
@ 840,470 SAY oLabel25 CAPTION dtoc(MEMVAR->DATALT) SIZE 154,30 ;
STYLE WS_BORDER+SS_CENTER ;
COLOR 16777215 BACKCOLOR 255 ;
FONT HFont():Add( '',0,-21,400,,,)
IF MEMVAR->UF # "AC"
CARREGA_MUNICIPIOS( oDlg, MEMVAR->UF )
ENDIF
oCombo6:SetItem( Ascan(MEMVAR->aVENBLO,MEMVAR->VENBLO ) )
oCombo1:SetItem( Ascan(MEMVAR->aISENTO,MEMVAR->ISENTO ) )
oCombo4:SetItem( Ascan(MEMVAR->aPAIS,RTRIM(MEMVAR->PAIS) ) )
oCombo2:SetItem( Ascan(MEMVAR->aUF,RTRIM(MEMVAR->UF) ) )
oCombo3:SetItem( Ascan(MEMVAR->aMunicipios,RTRIM(MEMVAR->CIDADE) ) )
ACTIVATE DIALOG oDlg CENTER
RETURN NIL
************************************************
STATIC FUNCTION VERIFICA_NRAZ_SOC( oDlg, cAcao )
************************************************
IF cAcao = "CONSULTAR"
RETURN .T.
ENDIF
IF MEMVAR->NRAZ_SOC = SPACE(60)
oDlg:oOwnerbutton2:DISABLE()
RETURN .F.
ENDIF
oDlg:oOwnerbutton2:ENABLE()
RETURN .T.
**************************************************
STATIC FUNCTION CARREGA_MUNICIPIOS( mUF )
**************************************************
LOCAL oCIDADE, nI
DO WHILE .T.
FOR nI = Len( MEMVAR->aMunicipios ) TO 1 STEP -1
hb_ADel( MEMVAR->aMunicipios, nI, .T. )
NEXT
IF Len(MEMVAR->aMunicipios) <= 0
EXIT
ENDIF
ENDDO
FOR EACH oCIDADE IN SEFAZ_CIDADE
IF oCIDADE[1] == mUF
AAdd(MEMVAR->aMunicipios,oCIDADE[3])
ENDIF
NEXT
RETURN( MEMVAR->aMunicipios )
*********************************************************************
STATIC FUNCTION CADASTROCLIENTES_CONSULTA_CNPJ( oDlg, oServer )
*********************************************************************
LOCAL oDlgCnpj;
, oOwnerbutton2;
, oCNPJ;
, oLabel1, oLabel2;
, oBitmap1;
, oCombo1;
, nCombo1:=1;
, cCNPJ:=MEMVAR->CPFCGC;
, oQuery;
oQuery:= oServer:Execute("SELECT CERTIFICADO_COMPUTADOR FROM CERTIFICADO WHERE CERTIFICADO_COMPUTADOR = '" + rtrim(hwg_GetComputerName()) + "'")
IF oQuery:Eof()
hwg_MsgInfo("Este Computador não possui CERTIFICADO DIGITAL instalado"+ HB_EOL()+"Pesquisa não poderá ser efetuada")
oQuery:Close()
return .T.
endif
oQuery:Close()
INIT DIALOG oDlgCnpj TITLE "CONSULTA CNPJ" ;
ICON MEMVAR->SGC_ICON ;
AT 0, 0 SIZE 445,168 CLIPPER NOEXIT
hwg_SetColorinFocus( oDlg,, 13172680 )
@ 24,35 BITMAP oBitmap1 SHOW 'searchonline' FROM RESOURCE SIZE 82,82
@ 333,100 OWNERBUTTON oOwnerbutton2 SIZE 98,32 ;
TEXT "Pesquisa" ;
COORDINATES 30, 0, 0, 0 ;
BITMAP 'APPLYBMP' FROM RESOURCE TRANSPARENT;
COORDINATES 5, 0, 0, 0;
ON CLICK {|| CADASTROCLIENTES_PESQUISA_CNPJ(oDlg, oServer, cCNPJ, MEMVAR->aUF[nCombo1] ), oDlg:close() }
oOwnerbutton2:Anchor := 12
@ 188,29 GET oCNPJ VAR cCNPJ SIZE 246,24 MAXLENGTH 14
@ 110,32 SAY oLabel1 CAPTION "CNPJ:" SIZE 72,21 ;
STYLE SS_RIGHT
@ 158,68 SAY oLabel2 CAPTION "UF:" SIZE 24,21
@ 188,65 GET COMBOBOX oCombo1 VAR nCombo1 ;
ITEMS MEMVAR->aUF ;
SIZE 63,24 DISPLAYCOUNT 5
ACTIVATE DIALOG oDlgCnpj CENTER
RETURN oDlg:lresult
********************************************************************************
STATIC FUNCTION CADASTROCLIENTES_PESQUISA_CNPJ( oDlg, oServer, cCNPJ, cUF)
********************************************************************************
LOCAL oQuery1;
, oQuery2;
, oSefaz;
, cRetorno;
, cStat;
, cCIDADE;
oQuery1:= oServer:Execute("SELECT FLAG_n_tpAmb FROM FLAG ")
oQuery2:= oServer:Execute("SELECT CERTIFICADO_NOMCERT FROM CERTIFICADO WHERE CERTIFICADO_COMPUTADOR = '" + rtrim(hwg_GetComputerName()) + "'")
IF oQuery2:Eof()
hwg_MsgInfo("Este Computador não possui CERTIFICADO DIGITAL instalado"+ HB_EOL()+"Pesquisa não poderá ser efetuada")
oQuery1:Close()
oQuery2:Close()
return .T.
endif
IF LEN(RTRIM(cCNPJ)) < 14
hwg_MsgInfo("CONSULTA AO CADASTRO DE CONTRIBUINTES SOMENTE POR CNPJ "+ HB_EOL()+ HB_EOL()+ "Clique no LINK para acesso ao SINTEGRA" )
RETURN NIL
ENDIF
oSefaz:= SefazClass():New()
oSefaz:cCertificado := TRIM(oQuery2:Fields( "CERTIFICADO_NOMCERT" ):Value)
// hwg_MsgInfo("["+TRIM(cCnpj)+"]"+"["+cUF+"]")
cRetorno:=oSefaz:NFeConsultaCadastro( TRIM(cCnpj), cUF, oSefaz:cCertificado, oQuery1:Fields( "FLAG_n_tpAmb" ):Value )
if XmlNode(cRetorno, "cStat") $ "111,112,259"
cStat :=XmlNode(cRetorno, "cStat")
MEMVAR->CPFCGC :=cCNPJ
MEMVAR->NRAZ_SOC :=XmlNode(cRetorno, "xNome") + space(60-len(XmlNode(cRetorno, "xNome")))
MEMVAR->NRAZ_FANT :=XmlNode(cRetorno, "xFant") + space(60-len(XmlNode(cRetorno, "xFant")))
MEMVAR->INSEST :=XmlNode(cRetorno, "IE") + space(18-len(XmlNode(cRetorno, "IE")))
MEMVAR->ISENTO :=XmlNode(cRetorno, "cSit")
MEMVAR->CEP :=SUBSTR(XmlNode(cRetorno, "CEP"),1,5)+"-"+SUBSTR(XmlNode(cRetorno, "CEP"),6,3)
MEMVAR->NUMERO :=val(XmlNode(cRetorno, "nro"))
MEMVAR->BAIR :=XmlNode(cRetorno, "xBairro")
cCIDADE :=XmlNode(cRetorno, "xMun")
cUF :=XmlNode(cRetorno, "UF")
MEMVAR->ENDER :=XmlNode(cRetorno, "xLgr")
IF cStat = "112"
cRetorno := "ACESSE AO SINTEGRA: http://www.sintegra.gov.br"+ HB_EOL()+ "PARA CONSULTA DETALHADA"
hwg_MsgInfo("STATUS: " + XmlNode(cRetorno, "cStat") + hb_Eol() + "MOTIVO: " + cRetorno + hb_Eol()+ hb_Eol() ,"CONSULTA CADASTRO DE CONTRIBUINTE")
ENDIF
IF XmlNode(cRetorno, "cStat") $ "259"
MEMVAR->ISENTO :="9"
ENDIF
IF LEN(cCNPJ) < 14
MEMVAR->CPFCGC:=replicate("0",14-LEN(cCNPJ))+cCNPJ
endif
// hwg_MsgInfo(mCPFCGC)
IF ! ValidIE( RTRIM(MEMVAR->INSEST), cUF )
MEMVAR->INSEST:="0"+MEMVAR->INSEST
ENDIF
IF MEMVAR->ISENTO = "0"
MEMVAR->ISENTO = "2"
MEMVAR->INSEST:= SPACE(18)
ENDIF
ENDIF
oDlg:oEdit2:REFRESH()
oDlg:oEdit1:REFRESH()
oDlg:oEdit3:REFRESH()
oDlg:oEdit8:REFRESH()
oDlg:oEdit9:REFRESH()
oDlg:oEdit11:REFRESH()
oDlg:oEdit13:REFRESH()
oDlg:oCombo2:SetItem( Ascan(MEMVAR->aUF,cUF ) )
oDlg:oCombo2:REFRESH()
oDlg:oCombo3:SetItem( Ascan(MEMVAR->aMunicipios,cCIDADE ) )
oDlg:oCombo3:REFRESH()
oQuery1:Close()
oQuery2:Close()
RETURN NIL
***********************************************************
static FUNCTION CADASTROCLIENTES_CONSULTA_CEP( oDlg, mCEP )
***********************************************************
LOCAL oHttp;
, cXML;
IF mCEP = ' - ' .OR. mCEP = SPACE(09)
hwg_MsgInfo( "o CEP esta em branco, verifique!" )
RETURN .F.
ENDIF
oHttp:= TIpClientHttp():new( "http://www.jpatecnologia.com.br/cep.asp?cep="+substr(mCEP,1,5)+'-'+substr(mCEP,7,3)+"&clipper=1" )
IF ! oHttp:open()
hwg_MsgInfo( "Erro na conecção: "+ oHttp:lastErrorMessage() )
RETURN .T.
ENDIF
cXML := oHttp:readAll()
oHttp:close()
IF Empty(cXML)
** hwg_MsgInfo( "Ocorreu um erro inesperado. Tente outro CEP...")
return .t.
ENDIF
MEMVAR->ENDER := XmlNode(cXml, "logradouro")
MEMVAR->BAIR := XmlNode(cXml, "bairro")
oDlg:oEdit8:REFRESH()
oDlg:oEdit9:REFRESH()
oDlg:oEdit11:REFRESH()
oDlg:oEdit13:REFRESH()
oDlg:oCombo2:SetItem( Ascan(MEMVAR->aUF,XmlNode(cXml, "uf") ) )
oDlg:oCombo2:REFRESH()
oDlg:oCombo3:SetItem( Ascan(MEMVAR->aMunicipios,XmlNode(cXml, "cidade") ) )
oDlg:oCombo3:REFRESH()
return .T.
*******************************************************
STATIC FUNCTION VERIFICA_TELEFONE( )
*******************************************************
IF LEN(RTRIM(MEMVAR->FONE)) = 0
RETURN .T.
ENDIF
IF LEN(RTRIM(MEMVAR->FONE)) < 10
hwg_MsgInfo("FORMATO DE NUMERO DE TELEFONE INVALIDO"+ HB_EOL()+ HB_EOL() + "DEVE CONTER NO MINIMO 10 DIGITOS")
RETURN .F.
ENDIF
RETURN .T.
*******************************************************
STATIC FUNCTION oCombo6_onChange( oDlg, valor )
*******************************************************
IF substr(valor,1,1) = "0"
oDlg:oedit18:Enable()
oDlg:oedit12:Enable()
ELSE
oDlg:oedit18:Disable()
oDlg:oedit12:Disable()
ENDIF
RETURN NIL
****************************************************************************
STATIC FUNCTION VERIFICA_CPFCNPJ( oServer, CPFCGC, CPFANT, cAcao )
****************************************************************************
LOCAL cQuery;
, oQuery_cpfcnpj;
IF cAcao = "ALTERAR" .AND. CPFCGC = CPFANT
RETURN .T.
ENDIF
IF LEN(RTRIM(CPFCGC)) < 12
IF !VDV2(CPFCGC)
RETURN .F.
ENDIF
ELSE
IF !VCGC(CPFCGC)
RETURN .F.
ENDIF
ENDIF
cQuery := "SELECT CLIENTES_NRAZ_SOC, CLIENTES_CPFCGC FROM CLIENTES WHERE CLIENTES_CPFCGC = '" + RTRIM(CPFCGC) + "'"
oQuery_cpfcnpj := oServer:Execute(cQuery)
IF ! oQuery_cpfcnpj:Eof()
hwg_MsgInfo("CPF/CNPJ já existe no cadastro" + HB_EOL() + HB_EOL() + oQuery_cpfcnpj:Fields( "CLIENTES_NRAZ_SOC" ):Value +HB_EOL() + HB_EOL() + "CNPJ/CPF: "+ oQuery_cpfcnpj:Fields( "CLIENTES_CPFCGC" ):Value, "Atenção !!!")
IF LEN(RTRIM(CPFCGC)) < 12
IF PERG( "Continua a Fazer o Cadastro com CPF já cadastrado ?" ) = "N"
oQuery_cpfcnpj:close()
RETURN .F.
ENDIF
ELSE
oQuery_cpfcnpj:close()
RETURN .F.
ENDIF
ENDIF
oQuery_cpfcnpj:close()
RETURN .T.
*******************************************************
STATIC FUNCTION VERIFICA_INCRICAO_ESTADUAL( )
*******************************************************
* If mINSEST != Space(15)
* If ! ValidIE( Rtrim(mINSEST), mUF )
* hwg_MsgInfo("INSCRICAO ESTADUAL INVALIDA"+ HB_EOL() )
* Return .F.
* ENDIF
* Endif
Return .T.
****************************************************************************************
STATIC FUNCTION SALVA_CLIENTES( oServer, cClientes_Id, cAcao )
****************************************************************************************
LOCAL oPAIS;
, oCIDADE;
, cQuery;
, cQuery1;
, cQuery2;
, oQuery;
IF cAcao = 'INCLUIR'
cQuery1 :="INSERT INTO CLIENTES ( "
cQuery2 :=" VALUES ("
cQuery1 += "CLIENTES_TIPCLI, "
cQuery2 += "'" + strzero(MEMVAR->TIPCLI,1,0) + "', "
cQuery1 += "CLIENTES_NRAZ_SOC, "
cQuery2 +="'" + rtrim(TIRACENTO(upper(MEMVAR->NRAZ_SOC))) + "', "
cQuery1 += "CLIENTES_TIPDOC, "
IF LEN(RTRIM(MEMVAR->CPFCGC)) < 12
cQuery2 +="'1', "
ELSE
cQuery2 +="'2', "
ENDIF
IF ! EMPTY(MEMVAR->CPFCGC)
cQuery1 += "CLIENTES_CPFCGC, "
cQuery2 +="'" + rtrim(MEMVAR->CPFCGC) + "', "
ENDIF
IF ! EMPTY(MEMVAR->INSEST)
cQuery1 += "CLIENTES_INSEST, "
cQuery2 +="'" + rtrim(MEMVAR->INSEST) + "', "
ENDIF
IF ! EMPTY(MEMVAR->INSMUN)
cQuery1 += "CLIENTES_INSMUN, "
cQuery2 +="'" + rtrim(MEMVAR->INSMUN) + "', "
ENDIF
IF MEMVAR->nCombo1 = 0
MEMVAR->nCombo1 := 1
ENDIF
cQuery1 += "CLIENTES_ISENTO, "
cQuery2 +="'" + SUBSTR(MEMVAR->aISENTO[MEMVAR->nCombo1],1,1) + "', "
IF ! EMPTY(MEMVAR->SUFRAMA)
cQuery1 += "CLIENTES_SUFRAMA, "
cQuery2 +="'" + rtrim(MEMVAR->SUFRAMA) + "', "
ENDIF
IF ! EMPTY(MEMVAR->EMAIL)
IF EMAIL_VALIDO(MEMVAR->EMAIL)
cQuery1 += "CLIENTES_EMAIL, "
cQuery2 +="'" + rtrim(MEMVAR->EMAIL) + "', "
endif
ENDIF
IF ! EMPTY(MEMVAR->ENDER)
cQuery1 += "CLIENTES_ENDER, "
cQuery2 +="'" + rtrim(MEMVAR->ENDER) + "', "
ENDIF
cQuery1 += "CLIENTES_NUMERO, "
cQuery2 +="'" + strzero(MEMVAR->NUMERO,9,0) + "', "
IF ! EMPTY(MEMVAR->COMPLEM)
cQuery1 += "CLIENTES_COMPLEM, "
cQuery2 +="'" + rtrim(MEMVAR->COMPLEM) + "', "
ENDIF
IF ! EMPTY(MEMVAR->BAIR)
cQuery1 += "CLIENTES_BAIR, "
cQuery2 +="'" + rtrim(MEMVAR->BAIR) + "', "
ENDIF
IF ! EMPTY(MEMVAR->CEP)
cQuery1 += "CLIENTES_CEP, "
cQuery2 +="'" + rtrim(MEMVAR->CEP) + "', "
ENDIF
cQuery1 += "CLIENTES_PAIS, "
cQuery2 += "'" + MEMVAR->aPAIS[MEMVAR->nCombo4] + "', "
FOR EACH oPAIS IN SEFAZ_CIDADE
IF oPAIS[3] == MEMVAR->aPAIS[MEMVAR->nCombo4]
cQuery1 += "CLIENTES_CODPAIS, "
cQuery2 += "'" + SUBSTR(oPAIS[2],3,4) + "', "
ENDIF
NEXT
cQuery1 += "CLIENTES_UF, "
cQuery2 += "'" + MEMVAR->aUF[MEMVAR->nCombo2] + "', "
cQuery1 += "CLIENTES_CIDADE, "
cQuery2 += "'" + MEMVAR->aMunicipios[MEMVAR->nCombo3] + "', "
FOR EACH oCIDADE IN SEFAZ_CIDADE
IF oCIDADE[1] == MEMVAR->aUF[MEMVAR->nCombo2] .AND. oCIDADE[3] == MEMVAR->aMunicipios[MEMVAR->nCombo3]
cQuery1 += "CLIENTES_CODMUN, "
cQuery2 += "'" + oCIDADE[2] + "', "
ENDIF
NEXT
cQuery1 += "CLIENTES_FONE, "
cQuery2 +="'" + rtrim(MEMVAR->FONE) + "', "
cQuery1 += "CLIENTES_CONTATO, "
cQuery2 +="'" + rtrim(MEMVAR->CONTATO) + "', "
cQuery1 += "CLIENTES_LIMCRE, "
cQuery2 +="'" + strzero(MEMVAR->LIMCRE,14,2) + "', "
cQuery1 += "CLIENTES_TOTCRE, "
cQuery2 +="'" + strzero(MEMVAR->TOTCRE,14,2) + "', "
cQuery1 += "CLIENTES_VENBLO, "
cQuery2 +="'" + SUBSTR(MEMVAR->aVENBLO[MEMVAR->nCombo6],1,1) + "', "
cQuery1 += "CLIENTES_DATCAD, "
cQuery2 +="'" + strzero(year(MEMVAR->DATCAD),4,0) + "-" + strzero(month(MEMVAR->DATCAD),2,0) + "-" + strzero(day(MEMVAR->DATCAD),2,0) + "', "
cQuery1 += "CLIENTES_DATALT, "
cQuery2 +="'" + strzero(year(MEMVAR->DATALT),4,0) + "-" + strzero(month(MEMVAR->DATALT),2,0) + "-" + strzero(day(MEMVAR->DATALT),2,0) + "', "
cQuery1 += "CLIENTES_USUALT, "
cQuery2 +="'" + rtrim(MEMVAR->USUALT) + "', "
cQuery1 += "CLIENTES_TAXCLI, "
cQuery2 +="'" + strzero(MEMVAR->TAXCLI,5,2) + "', "
cQuery1 += "CLIENTES_NUMPAR, "
cQuery2 +="'" + strzero(MEMVAR->NUMPAR,2,0) + "', "
cQuery1 += "CLIENTES_PERDES, "
cQuery2 +="'" + strzero(MEMVAR->PERDES,5,2) + "', "
cQuery1 += "CLIENTES_VALMIN, "
cQuery2 +="'" + strzero(MEMVAR->VALMIN,5,0) + "', "
cQuery1 += "CLIENTES_QUEM_BLOQ ) "
cQuery2 +="'" + rtrim(M->OPERADOR)+"/"+rtrim(hwg_GetComputerName()+" ["+dtoc(M->DAT_HOJE)+" "+time()+"]") + "' )"
// HB_GTINFO( HB_GTI_CLIPBOARDDATA, cQuery1+cQuery2)
oServer:Execute(cQuery1+cQuery2)
oQuery := oServer:Execute("SELECT LAST_INSERT_ID()")
MEMVAR->UCLIENTE := oQuery:Fields( "LAST_INSERT_ID()" ):Value
oServer:Execute("UPDATE CLIENTES SET CLIENTES_UCLIENTE = '" + STRZERO(MEMVAR->UCLIENTE,6,0) + "' WHERE CLIENTES_Id = '" + LTRIM(STR(MEMVAR->UCLIENTE)) + "'")
cQuery:=[INSERT INTO logtrans (LOGTRANS_OPERADOR, LOGTRANS_COMPUTADOR, LOGTRANS_TEXTO ) VALUES ( "] + rtrim(M->OPERADOR) +[", "] + rtrim(hwg_GetComputerName()) + [", "] + cQuery1+cQuery2 + [")]
oServer:Execute(cQuery)
ELSE
cQuery1 :="UPDATE CLIENTES SET "
cQuery1 +="CLIENTES_TIPCLI = '" + strzero(MEMVAR->TIPCLI,1,0) + "', "
IF strzero(M->NIV_ACESSO,1,0)$"89"
cQuery1 += "CLIENTES_NRAZ_SOC = '" + rtrim(TIRACENTO(upper(MEMVAR->NRAZ_SOC))) + "', "
ENDIF
IF LEN(RTRIM(MEMVAR->CPFCGC)) < 12
cQuery1 += "CLIENTES_TIPDOC ='1', "
ELSE
cQuery1 += "CLIENTES_TIPDOC ='2', "
ENDIF
IF ! EMPTY(MEMVAR->CPFCGC)
cQuery1 += "CLIENTES_CPFCGC = '" + rtrim(MEMVAR->CPFCGC) + "', "
ENDIF
IF ! EMPTY(MEMVAR->INSEST)
cQuery1 += "CLIENTES_INSEST = '" + rtrim(MEMVAR->INSEST) + "', "
ENDIF
IF ! EMPTY(MEMVAR->INSMUN)
cQuery1 += "CLIENTES_INSMUN = '" + rtrim(MEMVAR->INSMUN) + "', "
ENDIF
IF MEMVAR->nCombo1 = 0
MEMVAR->nCombo1 := 1
ENDIF
cQuery1 += "CLIENTES_ISENTO = '" + SUBSTR(MEMVAR->aISENTO[MEMVAR->nCombo1],1,1) + "', "
IF ! EMPTY(MEMVAR->SUFRAMA)
cQuery1 += "CLIENTES_SUFRAMA = '" + rtrim(MEMVAR->SUFRAMA) + "', "
ENDIF
IF ! EMPTY(MEMVAR->EMAIL)
IF EMAIL_VALIDO(MEMVAR->EMAIL)
cQuery1 += "CLIENTES_EMAIL = '" + rtrim(LOWER(MEMVAR->EMAIL)) + "', "
endif
ENDIF
IF ! EMPTY(MEMVAR->ENDER)
cQuery1 += "CLIENTES_ENDER = '" + rtrim(MEMVAR->ENDER) + "', "
ENDIF
cQuery1 += "CLIENTES_NUMERO = '" + strzero(MEMVAR->NUMERO,9,0) + "', "
IF ! EMPTY(MEMVAR->COMPLEM)
cQuery1 += "CLIENTES_COMPLEM = '" + rtrim(MEMVAR->COMPLEM) + "', "
ENDIF
IF ! EMPTY(MEMVAR->BAIR)
cQuery1 += "CLIENTES_BAIR = '" + rtrim(MEMVAR->BAIR) + "', "
ENDIF
cQuery1 += "CLIENTES_CEP = '" + MEMVAR->CEP + "', "
cQuery1 += "CLIENTES_PAIS = '" + MEMVAR->aPAIS[MEMVAR->nCombo4] + "', "
FOR EACH oPAIS IN SEFAZ_CIDADE
IF oPAIS[3] == MEMVAR->aPAIS[MEMVAR->nCombo4]
cQuery1 += "CLIENTES_CODPAIS = '" + SUBSTR(oPAIS[2],3,4) + "', "
ENDIF
NEXT
cQuery1 += "CLIENTES_UF = '" + MEMVAR->aUF[MEMVAR->nCombo2] + "', "
FOR EACH oCIDADE IN SEFAZ_CIDADE
IF oCIDADE[1] == MEMVAR->aUF[MEMVAR->nCombo2] .AND. oCIDADE[3] == MEMVAR->aMunicipios[MEMVAR->nCombo3]
cQuery1 += "CLIENTES_CODMUN = '" + oCIDADE[2] + "', "
ENDIF
NEXT
cQuery1 += "CLIENTES_CIDADE = '" + MEMVAR->aMunicipios[MEMVAR->nCombo3] + "', "
cQuery1 += "CLIENTES_FONE = '" + rtrim(MEMVAR->FONE) + "', "
IF ! EMPTY(MEMVAR->CONTATO)
cQuery1 += "CLIENTES_CONTATO = '" + rtrim(MEMVAR->CONTATO) + "', "
endif
cQuery1 += "CLIENTES_LIMCRE = '" + strzero(MEMVAR->LIMCRE,14,2) + "', "
cQuery1 += "CLIENTES_TOTCRE = '" + strzero(MEMVAR->TOTCRE,14,2) + "', "
cQuery1 += "CLIENTES_VENBLO = '" + SUBSTR(MEMVAR->aVENBLO[MEMVAR->nCombo6],1,1) + "', "
cQuery1 += "CLIENTES_DATCAD = '" + strzero(year(MEMVAR->DATCAD),4,0) + "-" + strzero(month(MEMVAR->DATCAD),2,0) + "-" + strzero(day(MEMVAR->DATCAD),2,0) + "', "
cQuery1 += "CLIENTES_DATALT = '" + strzero(year(MEMVAR->DATALT),4,0) + "-" + strzero(month(MEMVAR->DATALT),2,0) + "-" + strzero(day(MEMVAR->DATALT),2,0) + "', "
cQuery1 += "CLIENTES_USUALT = '" + rtrim(MEMVAR->USUALT) + "', "
cQuery1 += "CLIENTES_TAXCLI = '" + strzero(MEMVAR->TAXCLI,5,2) + "', "
cQuery1 += "CLIENTES_NUMPAR = '" + strzero(MEMVAR->NUMPAR,2,0) + "', "
cQuery1 += "CLIENTES_PERDES = '" + strzero(MEMVAR->PERDES,5,2) + "', "
cQuery1 += "CLIENTES_VALMIN = '" + strzero(MEMVAR->VALMIN,5,0) + "', "
cQuery1 += "CLIENTES_QUEM_BLOQ = '" + rtrim(M->OPERADOR)+"/"+rtrim(hwg_GetComputerName()+" ["+dtoc(M->DAT_HOJE)+" "+time()+"]") + "' "
cQuery1 += "WHERE CLIENTES_Id = '" + cClientes_Id + "'"
oServer:Execute(cQuery1)
cQuery:=[INSERT INTO logtrans (LOGTRANS_OPERADOR, LOGTRANS_COMPUTADOR, LOGTRANS_TEXTO ) VALUES ( "] + rtrim(M->OPERADOR) +[", "] + rtrim(hwg_GetComputerName()) + [", "] + cQuery1 + [")]
oServer:Execute(cQuery)
ENDIF
return NIL
*****************************************
STATIC Function EMAIL_VALIDO(cmail)
*****************************************
Local cRegEx:="^[\w-\.]{1,}\@([\da-zA-Z-_]{1,}\.){1,}[\da-zA-Z-_]{2,3}$"
IF HB_REGEXLIKE( cRegEx, RTrim(cmail) )
RETURN .T.
ENDIF
RETURN .F.
************************************************************
STATIC FUNCTION RELATORIO_CLIENTES( oServer )
************************************************************
LOCAL oPDF;
, nLinha;
, nPagina;
, nMaxCol;
, oQuery;
, oQuery1;
oPDF := PDFClass()
IF oPDF == NIL
hwg_msginfo("Falha da criação do objeto PDF")
RETURN .F.
ENDIF
oPDF:cFileName := "C:\TEMP\CLIENTES"+strzero(HB_RandomInt(1, 99999999),8,0)+'.PDF'
IF ! oPDF:PrintOptions( ); RETURN NIL; ENDIF
oQuery:= oServer:Execute("SELECT CLIENTES_UCLIENTE, CLIENTES_NRAZ_SOC FROM CLIENTES ORDER BY CLIENTES_NRAZ_SOC")
oQuery1:= oServer:Execute("SELECT FLAG_n_xNome, FLAG_n_xLgr, FLAG_n_nro, FLAG_n_xBairro, FLAG_n_CEP, FLAG_n_xMun, FLAG_n_xUF, FLAG_n_fone, FLAG_n_CNPJ, FLAG_n_IE FROM FLAG ")
IF oPDF:nPrinterType == PDFCLASS_LANDSCAPE
oPDF:Begin()
nLinha := 100
nPagina := 1
DO WHILE ! oQuery:Eof()
IF nLinha > 96
oPDF:AddPage()
nMaxCol := oPDF:MaxCol()
oPDF:DrawBox( 0, 0, 9, 41, Nil, Nil, Nil ) // box esquerdo
oPDF:DrawImageSize( 0.5, 0.5, 8, 39, "logotipo.jpg" ) // logotipo
oPDF:DrawBox( 0, 41, 9, 117, Nil, Nil, Nil ) // box centro
oPDF:DrawText( 2.0, 42, RTRIM(oQuery1:Fields( "FLAG_n_xNome" ):Value), nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 3.5, 42, RTRIM(oQuery1:Fields( "FLAG_n_xLgr" ):Value) + ', ' + RTRIM(oQuery1:Fields( "FLAG_n_nro" ):Value), Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 5.0, 42,'BAIRRO - ' + RTRIM(oQuery1:Fields( "FLAG_n_xBairro" ):Value), Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 6.4, 42, "CEP " +oQuery1:Fields( "FLAG_n_CEP" ):Value + ' - ' + RTRIM(oQuery1:Fields( "FLAG_n_xMun" ):Value) + ' - ' + oQuery1:Fields( "FLAG_n_xUF" ):Value + " - FONE: " +oQuery1:Fields( "FLAG_n_fone" ):Value, Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 8.0, 42, 'CNPJ-'+RTRIM(oQuery1:Fields( "FLAG_n_CNPJ" ):Value) + ' Insc.Est.-' + RTRIM(oQuery1:Fields( "FLAG_n_IE" ):Value) , Nil, 8, "Helvetica-Bold", Nil, Nil )
oPDF:DrawBox( 0, nMaxCol, 9, 41, Nil, Nil, Nil ) // box direito
oPDF:DrawText( 2, 120, "CAD.CLIENTES " , Nil, 10, "Helvetica", Nil, Nil )
oPDF:DrawText( 4, 120, "PAGINA Nr.: " + STRZERO(nPagina,4,0), Nil, 10, "Helvetica", Nil, Nil )
oPDF:DrawText( 6, 120, "DATA: " + DTOC(M->DAT_HOJE), Nil, 10, "Helvetica", Nil, Nil )
oPDF:DrawText( 8, 120, "HORA: " + TIME(), Nil, 10, "Helvetica", Nil, Nil )
oPDF:DrawBox( 9, 0, 12, nMaxCol, Nil, Nil, Nil )
nLinha := 11
nPagina += 1
oPDF:DrawText( nLinha, 1, "CODIGO", Nil, 10, "Helvetica", Nil, Nil )
oPDF:DrawText( nLinha, 16, "NOME CLIENTE", Nil, 10, "Helvetica", Nil, Nil )
nLinha += 3
ENDIF
oPDF:DrawText( nLinha, 1, oQuery:Fields( "CLIENTES_UCLIENTE" ):Value, Nil, 12, "Courier-Bold", Nil, Nil )
oPDF:DrawText( nLinha, 16, oQuery:Fields( "CLIENTES_NRAZ_SOC" ):Value, Nil, 10, "Helvetica", Nil, Nil )
nLinha += 2
oQuery:MoveNext()
ENDDO
oPDF:DrawLine( nLinha, 0, nLinha, nMaxCol, 1 )
oPDF:End( )
oQuery:Close( )
oQuery1:Close( )
ELSE
oPDF:nPrinterType := WIN_PRINTERGETDEFAULT()
oPDF:SetType( PDFCLASS_ROLLS )
oPDF:Begin()
oPDF:nPageHeight := 841.89
oPDF:AddPage()
nMaxCol := oPDF:MaxCol()
oPDF:DrawImageSize( 0, 0, 4, 19, "logotipo.jpg" ) // logotipo
oPDF:DrawText( 5, 0, RTRIM(oQuery1:Fields( "FLAG_n_xNome" ):Value), nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 6, 0, RTRIM(oQuery1:Fields( "FLAG_n_xLgr" ):Value) + ', ' + RTRIM(oQuery1:Fields( "FLAG_n_nro" ):Value), Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 7, 0,'BAIRRO - ' + RTRIM(oQuery1:Fields( "FLAG_n_xBairro" ):Value), Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 8, 0, "CEP " +oQuery1:Fields( "FLAG_n_CEP" ):Value + ' - ' + RTRIM(oQuery1:Fields( "FLAG_n_xMun" ):Value) + ' - ' + oQuery1:Fields( "FLAG_n_xUF" ):Value + " - FONE: " +oQuery1:Fields( "FLAG_n_fone" ):Value, Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 9, 0, 'CNPJ-'+RTRIM(oQuery1:Fields( "FLAG_n_CNPJ" ):Value) + ' Insc.Est.-' + RTRIM(oQuery1:Fields( "FLAG_n_IE" ):Value) , Nil, 8, "Helvetica-Bold", Nil, Nil )
oPDF:DrawLine( 9.5, 0, 9.5, nMaxCol, 1 )
oPDF:DrawText( 10.5, 0, "CADASTRO DE CLIENTES", Nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 11.5, 0, "CODIGO NOME CLIENTE", Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawLine( 12, 0, 12, nMaxCol, 1 )
nLinha := 13
DO WHILE ! oQuery:Eof()
IF nLinha > 70
oPDF:AddPage()
nLinha := 0
ENDIF
oPDF:DrawText( nLinha, 0, oQuery:Fields( "CLIENTES_UCLIENTE" ):Value, Nil, 08, "Helvetica", Nil, Nil )
oPDF:DrawText( nLinha++, 7, oQuery:Fields( "CLIENTES_NRAZ_SOC" ):Value, Nil, 08, "Helvetica", Nil, Nil )
oQuery:MoveNext()
ENDDO
oPDF:End( )
oQuery:Close( )
oQuery1:Close( )
ENDIF
oPDF:PrintPreview( )
RETURN NIL
exemplo usando SQL