18 Mar 2020 14:28
*************************************************************************************************************
STATIC FUNCTION FILTROLOGGERAL( oServer, nCODPRO, dDatepicker1, dDatepicker2, lEntradas , lSaidas)
*************************************************************************************************************
LOCAL aResult:={};
, oQuery;
, cQuery
cQuery := "SELECT LOGGERAL_NUMNOT, ";
+ "LOGGERAL_CODPRO, ";
+ "LOGGERAL_DATMOV, ";
+ "LOGGERAL_CODVEN, ";
+ "LOGGERAL_CLIFOR, ";
+ "LOGGERAL_QUANT, ";
+ "LOGGERAL_VALUNI, ";
+ "LOGGERAL_OPERADOR, ";
+ "CASE WHEN LOGGERAL_TIPMOV IS TRUE THEN 'ENTRADA' ELSE 'SAIDA' END AS STATUS_TIPO ";
IF nCODPRO # 0
cQuery += "from loggeral WHERE LOGGERAL_CODPRO = '" + STRZERO(nCODPRO,7,0) + "' AND "
ELSE
cQuery += "from loggeral WHERE "
ENDIF
cQuery += "LOGGERAL_DATMOV BETWEEN " ;
+ "'" + STRZERO(YEAR(dDatepicker1),4,0) + "-" + STRZERO(MONTH(dDatepicker1),2,0) + "-" + STRZERO(DAY(dDatepicker1),2,0) + "'";
+ " AND ";
+ "'" + STRZERO(YEAR(dDatepicker2),4,0) + "-" + STRZERO(MONTH(dDatepicker2),2,0) + "-" + STRZERO(DAY(dDatepicker2),2,0) + "'"
IF lEntradas .AND. ! lSaidas
cQuery += " AND LOGGERAL_TIPMOV IS TRUE "
ELSEIF ! lEntradas .AND. lSaidas
cQuery += " AND LOGGERAL_TIPMOV IS FALSE "
ENDIF
// hwg_MsgInfo( cQuery,"QUERY" )
oQuery := oServer:Execute(cQuery)
DO WHILE ! oQuery:Eof()
aAdd( aResult, {oQuery:Fields( "LOGGERAL_NUMNOT" ):Value,;
oQuery:Fields( "LOGGERAL_CODPRO" ):Value,;
oQuery:Fields( "LOGGERAL_DATMOV" ):Value,;
oQuery:Fields( "STATUS_TIPO" ):Value,;
oQuery:Fields( "LOGGERAL_CODVEN" ):Value,;
oQuery:Fields( "LOGGERAL_CLIFOR" ):Value,;
oQuery:Fields( "LOGGERAL_QUANT" ):Value,;
oQuery:Fields( "LOGGERAL_VALUNI" ):Value,;
oQuery:Fields( "LOGGERAL_OPERADOR" ):Value} )
oQuery:MoveNext()
ENDDO
oQuery:Close()
RETURN aResult
18 Mar 2020 14:43
18 Mar 2020 15:19
gilbertosilverio escreveu:Fernando,
Estava vendo teu codigo, e pelo que entendi, voce trabalha com MARIADB e DBF, pela chamada que voce faz na consulta de produtos correto?
Da pra trabalhar com duas base de dados?
23 Mar 2020 16:04
/*
TITULO : SISTEMA DE GESTÇO DE COMERCIO
DATA : 09/03/2020
PROGRAMA : CADASTROCLIENTES_MARIADB.PRG
COMENTARIO : CADASTRO/RELATORIO (/Clientes)/
*/
#pragma -w0
#pragma -es0
#include "hbgtinfo.ch"
#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 CADASTROCLIENTESMARIADB( )
****************************************
LOCAL oDlg ;
, oLabel1, oLabel4 ;
, oBrowse1 ;
, oToolbar1 ;
, nKeyPress ;
, oColuna, bColorBlock
PRIVATE cProgressKey:="";
, cConsulta:="";
, cAlvo_Consulta:="CLIENTES_NRAZ_SOC"
oServer := MySqlConnection( )
oServer:Open()
******************************************************************************************************************************************************
aVENBLO := {"0 - Liberado","1 - Bloqueado"}
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 POSCHANGE {|| hwg_WriteStatus( oDlg,2,LTrim(Str( RecNo(),8))+ "/" +LTrim(Str( Lastrec(),8))) } ;
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" )
oBrowse1:AddColumn( HColumn():New( "Codigo",hwg_ColumnArBlock(),"C",08,0,.F.,,,,,,,,;
{|| oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY CLIENTES_UCLIENTE" ), cAlvo_Consulta:="CLIENTES_UCLIENTE",obrowse1:Refresh(), hwg_WriteStatus( oDlg,3,"Ordem: Codigo") } ,,,,))
oBrowse1:AddColumn( HColumn():New( "Nome Cliente/Razao Social",hwg_ColumnArBlock(),"C",65,0,.F.,,,,,,,,;
{|| oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY CLIENTES_NRAZ_SOC" ), cAlvo_Consulta:="CLIENTES_NRAZ_SOC", obrowse1:Refresh(), hwg_WriteStatus( oDlg,3,"Ordem: Nome Cliente/Razao Social") } ,,,,))
oBrowse1:AddColumn( HColumn():New( "CPF/CNPJ",hwg_ColumnArBlock(),"C",18,0,.F.,,,,,,,,;
{|| oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY CLIENTES_CPFCGC"), 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"), 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('Data Alteração', hwg_ColumnArBlock() ,'D',12, 0 ,.F.,,,,,,,,,,,,))
oBrowse1:AddColumn( HColumn():New('Operador', hwg_ColumnArBlock() ,'C',20, 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"), 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 " + cAlvo_Consulta ), obrowse1:REFRESH()},'Incluir novo Cliente','', "oToolbutton1")
oToolbar1:AddButton("CMDEDIT", , 0, 16, "Altera" ,{||CADCLIENTES( oServer, LTRIM(str(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 22])), "ALTERAR" ), oBrowse1:aArray := CARREGA_CLIENTES( oServer, "ORDER BY " + 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 " + 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,{| This, nId | RELATORIO_CLIENTES( ) }}};
, "oToolbutton6")
oToolbar1:AddButton("EXIT16BMP", , 4, 16, "Sair" ,{|| DBCLOSEALL(), 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
oServer:Close()
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_DATALT, ";
+ "CLIENTES_USUALT, ";
+ "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_DATALT" ):Value,;
oQuery:Fields( "CLIENTES_USUALT" ):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,2,oDlg:oBrowse1:nCurrent)
hwg_WriteStatus( oDlg,3,"Ordem: Nome Cliente/Razao Social")
RETURN Nil
******************************************************
STATIC FUNCTION CADCLIENTES_EXCLUI( oDlg, oServer )
******************************************************
LOCAL oQuery;
IF hwg_MsgYesNo("DESEJA excluir, Tem certeza disso ?","Excluindo Cliente")
BEGIN SEQUENCE
oQuery := oServer:Execute("DELETE FROM clientes WHERE CLIENTES_Id='" + LTRIM(str(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 22])) + "'")
RECOVER
hwg_msginfo("REGISTRO NÃO FOI EXCLUIDO, ERRO DE ESCLUSÃO","Excluindo Cliente")
END SEQUENCE
ENDIF
RETURN NIL
***********************************************************
STATIC FUNCTION oBrowse1_onClick( oDlg, oServer )
***********************************************************
IF hwg_LastKey() == MK_LBUTTON
CADCLIENTES( oServer, LTRIM(str(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 22])), "CONSULTAR" )
oDlg:oBrowse1:Refresh()
RETURN .T.
ENDIF
RETURN .T.
*******************************************************************
STATIC FUNCTION oBrowse1_onKeyDown( oBrowse1, nKey, oDlg, oServer )
*******************************************************************
LOCAL nPosicao:=0;
, nKeyPress:=nkey;
, cRegEx := "[a-zA-Z0-9 ]{1}";
, cQuery
KSETCAPS(.T.);
IF nKeyPress # 8 .AND. AllTrim(Str(nKeyPress)) $ "34|33|37|38|39|40|20|16"
cProgressKey:=""
oDlg:oLabel4:settext(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, 22])), "CONSULTAR" )
oDlg:oBrowse1:Refresh()
RETURN .T.
ELSEIF nKeyPress = VK_ESCAPE
oDlg:Close()
RETURN .T.
ENDIF
If nKeyPress # 8
cProgressKey += Chr(nKeyPress)
nPosicao:=AScan(oDlg:oBrowse1:aArray,cProgressKey)
oDlg:oLabel4:settext(cProgressKey)
cConsulta:= "WHERE " + cAlvo_Consulta + " LIKE '" + cProgressKey + "%'" + " ORDER BY CLIENTES_NRAZ_SOC"
oBrowse1:aArray := CARREGA_CLIENTES( oServer, cConsulta )
oDlg:obrowse1:REFRESH()
ELSEIF nKeyPress = 8 .AND. Len(cProgressKey) >= 1
cProgressKey:=Left(cProgressKey,Len(cProgressKey) - 1)
nPosicao:=AScan(oDlg:oBrowse1:aArray,cProgressKey)
oDlg:oLabel4:settext(cProgressKey)
cConsulta:= "WHERE " + cAlvo_Consulta + " LIKE '" + cProgressKey + "%'" + " ORDER BY CLIENTES_NRAZ_SOC"
oBrowse1:aArray := CARREGA_CLIENTES( oServer, cConsulta )
oDlg:obrowse1:REFRESH()
ENDIF
IF nPosicao # 0
cConsulta:= "WHERE " + cAlvo_Consulta + " LIKE '" + cProgressKey + "%'" + " ORDER BY CLIENTES_NRAZ_SOC"
oBrowse1:aArray := CARREGA_CLIENTES( oServer, cConsulta )
oDlg:obrowse1:REFRESH()
ENDIF
return .T.
***********************************************************
STATIC FUNCTION CADCLIENTES( oServer, cClientes_Id, cAcao )
***********************************************************
LOCAL oDlg, oStatus1, oLine1,oLine2, oEdit1, oLabel1, oEdit2, oLabel2, oEdit3 ;
, oLabel3, oEdit4, oLabel4, oEdit5, oLabel5, oEdit6, oLabel6, oOwnerbutton1 ;
, oCombo1, oLabel7, oLink1, oLink2, oEdit7, oLabel8, oEdit8, oLabel9, oEdit9 ;
, oLabel10, oEdit10, oLabel11, oEdit11, oLabel12, oLabel13, oCombo2, oLabel14 ;
, oCombo3, oLabel15, oEdit13, oLabel16, oEdit14, oLabel17, oCombo4, oEdit12 ;
, oCombo5, oCombo6, oLabel19, oLabel18, oEdit15, oLabel20, oEdit16, oLabel21, oEdit17 ;
, oLabel22, oOwnerbutton2, oOwnerbutton3, oOwnerbutton4, oPanel1, oLabel24, oLabel25, oLabel26 ;
, oPAIS, oUF, oCIDADE;
, cEdit1 := "" , nEdit2 := 0 , nEdit3 := 0 , nEdit4 := 0 , nEdit5 := 0 , cEdit6 := "" ;
, cEdit7 := "" , nEdit8 := 0 , cEdit9 := "" , cEdit10 := "" , nEdit11 := 0 ;
, cEdit13 := "" , cEdit14 := "" , nEdit12 := 0 , nCombo5 := 1 , nEdit15 := 0 ;
, dEdit16 := DATE() , dEdit17 := DATE() ;
, oQuery;
, cQuery;
private aPAIS:= {};
, aUF:= {};
, aMunicipios:= {};
, nCombo1 := 1;
, nCombo2 := 1;
, nCombo6 := 1;
, nCombo3 := 1;
, nCombo4 := 1
hb_Default( @cAcao, "CONSULTAR" )
hb_Default( @cClientes_Id, "0" )
// hwg_MsgInfo(cAcao + "/" + cClientes_Id)
// RETURN NIL
IF cAcao = "INCLUIR"
MEMVAR->ID :=0
MEMVAR->TIPCLI :=1
MEMVAR->NRAZ_SOC :=SPACE(60)
MEMVAR->TIPDOC :=1
MEMVAR->CPFCGC :=SPACE(18)
MEMVAR->CPFCGC_ANT :=SPACE(18)
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->CPFCGC_ANT :=MEMVAR->CPFCGC
ENDIF
FOR EACH oPAIS IN SEFAZ_CIDADE
IF oPAIS[1] == "EX"
AAdd(aPAIS,oPAIS[3])
ENDIF
NEXT
FOR EACH oUF IN SEFAZ_UF
AAdd(aUF,oUF[1])
NEXT
FOR EACH oCIDADE IN SEFAZ_CIDADE
IF oCIDADE[1] == MEMVAR->UF
AAdd(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
ThisCAD := oDlg
hwg_SetColorinFocus( oDlg,, 13172680 )
// ADD STATUS PANEL TO oDlg HEIGHT 30 PARTS 200,120,300
@ 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( oDlg, oServer ) }
@ 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 {|| oEdit3_onLostFocus( ) }
@ 404,81 SAY oLabel7 CAPTION "Tipo Contribuinte" SIZE 112,21
@ 521,79 GET COMBOBOX oCombo1 VAR nCombo1 ;
ITEMS 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 nCombo4 ;
ITEMS aPAIS ;
SIZE 259,24 DISPLAYCOUNT 8
@ 78,376 SAY oLabel14 CAPTION "UF" SIZE 20,24
@ 105,374 GET COMBOBOX oCombo2 VAR nCombo2 ;
ITEMS aUF ;
SIZE 65,24 DISPLAYCOUNT 8 ;
ON CHANGE {|| oCombo2_onChange( oDlg, aUF[nCombo2] ),oCombo3:REFRESH() }
@ 33,407 SAY oLabel15 CAPTION "Municipio" SIZE 65,24
@ 105,405 GET COMBOBOX oCombo3 VAR nCombo3 ITEMS 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 {|| oEdit10_onLostFocus( ) }
@ 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( ) }
@ 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( 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 nCombo6 ITEMS aVENBLO SIZE 154,24 ;
ON CHANGE {|| oCombo6_onChange( 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"
oCombo2_onChange( oDlg, MEMVAR->UF )
ENDIF
oCombo6:SetItem( Ascan(aVENBLO,MEMVAR->VENBLO ) )
oCombo1:SetItem( Ascan(aISENTO,MEMVAR->ISENTO ) )
oCombo4:SetItem( Ascan(aPAIS,RTRIM(MEMVAR->PAIS) ) )
oCombo2:SetItem( Ascan(aUF,RTRIM(MEMVAR->UF) ) )
oCombo3:SetItem( Ascan(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.
ELSE
oDlg:oOwnerbutton2:ENABLE()
RETURN .T.
ENDIF
**************************************************
STATIC FUNCTION oCombo2_onChange( oDlg, mUF )
**************************************************
LOCAL oCIDADE
DO WHILE .T.
FOR nI = Len( aMunicipios ) TO 1 STEP -1
hb_ADel( aMunicipios, nI, .T. )
NEXT
// FOR nI := 1 TO Len(aMunicipios)
// hb_ADel( aMunicipios, nI, .T. )
// NEXT
IF Len(aMunicipios) <= 0
EXIT
ENDIF
ENDDO
FOR EACH oCIDADE IN SEFAZ_CIDADE
IF oCIDADE[1] == mUF
AAdd(aMunicipios,oCIDADE[3])
ENDIF
NEXT
oDlg:oCombo3:SetItem( Ascan(aMunicipios,RTRIM(MEMVAR->CIDADE) ) )
// nCombo3 := 1
RETURN( aMunicipios )
******************************************************
STATIC FUNCTION CADASTROCLIENTES_CONSULTA_CNPJ( )
******************************************************
LOCAL oDlg, oOwnerbutton2, oOwnerbutton3, oCNPJ, oLabel1, oLabel2, oBitmap1, oCombo1
Local cCNPJ := mCPFCGC , nCombo1 := 1
SELE CERTIFICADO
IF !DBSEEK(rtrim(hwg_GetComputerName()))
hwg_MsgInfo("Este Computador não possui CERTIFICADO DIGITAL instalado"+ HB_EOL()+"Pesquisa não poderá ser efetuada")
SELE CLIENTES
return .T.
endif
SELE CLIENTES
INIT DIALOG oDlg TITLE "CONSULTA CNPJ" ;
ICON MEMVAR->SGC_ICON ;
AT 0, 0 SIZE 445,168 CLIPPER NOEXIT
ThisCNPJ := oDlg
hwg_SetColorinFocus( oDlg,, 13172680 )
@ 24,35 BITMAP oBitmap1 SHOW 'searchonline' FROM RESOURCE SIZE 62,62
@ 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(cCNPJ,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 aUF ;
SIZE 63,24 DISPLAYCOUNT 5
ACTIVATE DIALOG oDlg CENTER
RETURN oDlg:lresult
***************************************************************
STATIC FUNCTION CADASTROCLIENTES_PESQUISA_CNPJ( cCNPJ,cUF)
***************************************************************
DBSELECTAREA("CERTIFICADO")
IF !DBSEEK(rtrim(hwg_GetComputerName()))
hwg_MsgInfo("Computador sem certificado digital instalado"+ HB_EOL()+"A Operação não poderá ser efetuada")
DBSELECTAREA("CLIENTES")
RETURN NIL
endif
DBSELECTAREA("CLIENTES")
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(CERTIFICADO->NOMCERT)
// hwg_MsgInfo("["+TRIM(cCnpj)+"]"+"["+cUF+"]")
cRetorno:=oSefaz:NFeConsultaCadastro( TRIM(cCnpj), cUF, oSefaz:cCertificado, FLAG->n_tpAmb )
if XmlNode(cRetorno, "cStat") $ "111,112"
cStat :=XmlNode(cRetorno, "cStat")
xMotivo :=XmlNode(cRetorno, "xMotivo")
m->leitura :=XmlNode(cRetorno, "infCad")
mCPFCGC :=cCNPJ
mNRAZ_SOC :=XmlNode(cRetorno, "xNome") + space(60-len(XmlNode(cRetorno, "xNome")))
mNRAZ_FANT :=XmlNode(cRetorno, "xFant") + space(60-len(XmlNode(cRetorno, "xFant")))
mINSEST :=XmlNode(cRetorno, "IE") + space(18-len(XmlNode(cRetorno, "IE")))
mISENTO :=XmlNode(cRetorno, "cSit")
mCEP :=SUBSTR(XmlNode(cRetorno, "CEP"),1,5)+"-"+SUBSTR(XmlNode(cRetorno, "CEP"),6,3)
mNUMERO :=val(XmlNode(cRetorno, "nro"))
mBAIR :=XmlNode(cRetorno, "xBairro")
mCIDADE :=XmlNode(cRetorno, "xMun")
mUF :=XmlNode(cRetorno, "UF")
mENDER :=XmlNode(cRetorno, "xLgr")
IF cStat = "112"
cRetorno := "ACESSE AO SINTEGRA: http://www.sintegra.gov.br"+ HB_EOL()+ "PARA CONSULTA DETALHADA"
ENDIF
IF LEN(cCNPJ) < 14
mCPFCGC:=replicate("0",14-LEN(cCNPJ))+cCNPJ
endif
// hwg_MsgInfo(mCPFCGC)
IF ! ValidIE( RTRIM(mINSEST), mUF )
mINSEST:="0"+mINSEST
ENDIF
IF mISENTO = "0"
mISENTO = "2"
mINSEST:= SPACE(18)
ENDIF
// hwg_MsgInfo( ;
// "STATUS: " + cStat + hb_Eol()+ ;
// "MOTIVO: " + xMotivo + hb_Eol()+hb_Eol()+ ;
// "CNPJ: " + cCNPJ + hb_Eol() + ;
// "RAZAO SOCIAL: " + mNRAZ_SOC + hb_Eol() + ;
// "NOME FANTASIA: " + mNRAZ_FANT + hb_Eol() + ;
// "INSC.EST.: " + mINSEST + hb_Eol() + ;
// "TIPO CONT.: " + mISENTO + hb_Eol() + ;
// "CEP.: " + mCEP + hb_Eol() + ;
// "ENDERECO: " + mENDER + hb_Eol() + ;
// "NUMERO: " + XmlNode(m->leitura, "nro") + hb_Eol() + ;
// "BAIRRO: " + mBAIR + hb_Eol() + ;
// "CIDADE: " + mCIDADE + hb_Eol() + ;
// "UF: " + mUF + hb_Eol() + hb_Eol() ,"CONSULTA CADASTRO DE CONTRIBUINTE")
ELSE
hwg_MsgInfo("STATUS: " + XmlNode(cRetorno, "cStat") + hb_Eol() + "MOTIVO: " + XmlNode(cRetorno, "xMotivo") + hb_Eol()+ hb_Eol() ,"CONSULTA CADASTRO DE CONTRIBUINTE")
IF XmlNode(cRetorno, "cStat") $ "259"
mISENTO :="9"
ENDIF
ENDIF
ThisCAD:oEdit2:REFRESH()
ThisCAD:oEdit1:REFRESH()
ThisCAD:oEdit3:REFRESH()
ThisCAD:oEdit8:REFRESH()
ThisCAD:oEdit9:REFRESH()
ThisCAD:oEdit11:REFRESH()
ThisCAD:oEdit13:REFRESH()
ThisCAD:oCombo2:SetItem( Ascan(aUF,mUF ) )
ThisCAD:oCombo2:REFRESH()
ThisCAD:oCombo3:SetItem( Ascan(aMunicipios,RTRIM(mCIDADE) ) )
ThisCAD:oCombo3:REFRESH()
RETURN
***********************************************************
static FUNCTION CADASTROCLIENTES_CONSULTA_CEP( mCEP )
***********************************************************
LOCAL oHttp, cXML, cCep
LOCAL cRes, cResTxt, cUf, cCidade, cTipo, cEnde, cBairro
DO WHILE .T.
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->Uf := XmlNode(cXml, "uf")
MEMVAR->CIDADE := XmlNode(cXml, "cidade")
MEMVAR->ENDER := XmlNode(cXml, "logradouro")
MEMVAR->BAIR := XmlNode(cXml, "bairro")
ThisCAD:oEdit8:REFRESH()
ThisCAD:oEdit9:REFRESH()
ThisCAD:oEdit11:REFRESH()
ThisCAD:oEdit13:REFRESH()
ThisCAD:oCombo2:SetItem( Ascan(aUF,MEMVAR->Uf ) )
ThisCAD:oCombo2:REFRESH()
ThisCAD:oCombo3:SetItem( Ascan(aMunicipios,MEMVAR->CIDADE ) )
ThisCAD:oCombo3:REFRESH()
return .T.
ENDDO
*****************************************
STATIC FUNCTION oEdit10_onLostFocus( )
*****************************************
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( valor )
*****************************************
IF substr(valor,1,1) = "0"
ThisCAD:oedit18:Enable()
ThisCAD:oedit12:Enable()
ELSE
ThisCAD:oedit18:Disable()
ThisCAD:oedit12:Disable()
ENDIF
RETURN
********************************************
STATIC FUNCTION oEdit18_onInit( valor )
********************************************
IF substr(valor,1,1) = "0"
ThisCAD:oedit18:Enable()
ThisCAD:oedit12:Enable()
ELSE
ThisCAD:oedit18:Disable()
ThisCAD:oedit12:Disable()
ENDIF
RETURN
************************************************************
STATIC FUNCTION VERIFICA_CPFCNPJ( oDlg, oServer )
************************************************************
LOCAL cQuery;
, oQuery_cpfcnpj;
IF RTRIM(MEMVAR->CPFCGC) # RTRIM(MEMVAR->CPFCGC_ANT)
IF LEN(RTRIM(MEMVAR->CPFCGC)) < 12
IF !VDV2(MEMVAR->CPFCGC)
RETURN .F.
ENDIF
ELSE
IF !VCGC(MEMVAR->CPFCGC)
RETURN .F.
ENDIF
ENDIF
cQuery := "SELECT CLIENTES_NRAZ_SOC, CLIENTES_CPFCGC FROM CLIENTES WHERE CLIENTES_CPFCGC = " + MEMVAR->CPFCGC
oQuery_cpfcnpj := oServer:Execute(cQuery)
IF ! oQuery_cpfcnpj:Eof()
hwg_MsgInfo("CPF/CNPJ já existe no cadastro" + HB_EOL() + oQuery_cpfcnpj:Fields( "CLIENTES_NRAZ_SOC" ):Value +HB_EOL() + "CNPJ/CPF: "+ oQuery_cpfcnpj:Fields( "CLIENTES_CPFCGC" ):Value, "Atenção !!!")
IF PERG( "Continua a Fazer o Cadastro com CNPJ/CPF já cadastrado ?" ) = "N"
oQuery_cpfcnpj:close()
RETURN .F.
ENDIF
ENDIF
oQuery_cpfcnpj:close()
ENDIF
RETURN .T.
********************************************
STATIC FUNCTION oEdit3_onLostFocus
********************************************
* 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, oUF, oCIDADE;
, cQuery1;
, cQuery2;
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 nCombo1 = 0
nCombo1 := 1
ENDIF
cQuery1 += "CLIENTES_ISENTO, "
cQuery2 +="'" + SUBSTR(aISENTO[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 += "'" + aPAIS[nCombo4] + "', "
FOR EACH oPAIS IN SEFAZ_CIDADE
IF oPAIS[3] == aPAIS[nCombo4]
cQuery1 += "CLIENTES_CODPAIS, "
cQuery2 += "'" + SUBSTR(oPAIS[2],3,4) + "', "
ENDIF
NEXT
cQuery1 += "CLIENTES_UF, "
cQuery2 += "'" + aUF[nCombo2] + "', "
cQuery1 += "CLIENTES_CIDADE, "
cQuery2 += "'" + aMunicipios[nCombo3] + "', "
FOR EACH oCIDADE IN SEFAZ_CIDADE
IF oCIDADE[1] == aUF[nCombo2] .AND. oCIDADE[3] == aMunicipios[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(aVENBLO[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)
oQuery := oServer:Execute(cQuery1+cQuery2)
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 nCombo1 = 0
nCombo1 := 1
ENDIF
cQuery1 += "CLIENTES_ISENTO = '" + SUBSTR(aISENTO[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 = '" + aPAIS[nCombo4] + "', "
FOR EACH oPAIS IN SEFAZ_CIDADE
IF oPAIS[3] == aPAIS[nCombo4]
cQuery1 += "CLIENTES_CODPAIS = '" + SUBSTR(oPAIS[2],3,4) + "', "
ENDIF
NEXT
cQuery1 += "CLIENTES_UF = '" + aUF[nCombo2] + "', "
FOR EACH oCIDADE IN SEFAZ_CIDADE
IF oCIDADE[1] == aUF[nCombo2] .AND. oCIDADE[3] == aMunicipios[nCombo3]
cQuery1 += "CLIENTES_CODMUN = '" + oCIDADE[2] + "', "
ENDIF
NEXT
cQuery1 += "CLIENTES_CIDADE = '" + aMunicipios[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(aVENBLO[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 + "'"
oQuery := oServer:Execute(cQuery1)
ENDIF
return NIL
*****************************************
STATIC Function EMAIL_VALIDO(cmail)
*****************************************
Local cRegEx
cRegEx :="^[\w-\.]{1,}\@([\da-zA-Z-_]{1,}\.){1,}[\da-zA-Z-_]{2,3}$"
IF HB_REGEXLIKE( cRegEx, RTrim(cmail) )
RETURN .T.
ELSE
RETURN .F.
ENDIF
************************************************************
STATIC FUNCTION RELATORIO_CLIENTES( )
************************************************************
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
DBSELECTAREA("CLIENTES")
Ordsetfocus(2)
CLIENTES->( DBGOTOP() )
IF oPDF:nPrinterType == PDFCLASS_LANDSCAPE
oPDF:Begin()
nLinha := 100
nPagina := 1
DO WHILE ! EOF()
IF nLinha > 96
oPDF:AddPage()
nMaxCol := oPDF:MaxCol()
nMaxRow := oPDF:MaxRow()
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(FLAG->n_xNome), nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 3.5, 42, RTRIM(FLAG->n_xLgr) + ', ' + RTRIM(FLAG->n_nro), Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 5.0, 42,'BAIRRO - ' + RTRIM(FLAG->n_xBairro), Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 6.4, 42, "CEP " +FLAG->n_CEP + ' - ' + RTRIM(FLAG->n_xMun) + ' - ' + FLAG->n_xUF + " - FONE: " +FLAG->n_fone, Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 8.0, 42, 'CNPJ-'+RTRIM(FLAG->n_CNPJ) + ' Insc.Est.-' + RTRIM(FLAG->n_IE) , 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(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
nHightLin:=3
nLenItem := 20
nLenUnit := 22
nLenVlrUni := 27
nLenDescri := ( nMaxCol - ( nLenItem + nLenUnit + nLenVlrUni ) )
oPDF:DrawText( nLinha, 1, "CODIGO", Nil, 10, "Helvetica", Nil, Nil )
oPDF:DrawText( nLinha, 16, "NOME/RAZAO SOCIAL", Nil, 10, "Helvetica", Nil, Nil )
nLinha += 3
ENDIF
oPDF:DrawText( nLinha, 1, CLIENTES->UCLIENTE, Nil, 12, "Courier-Bold", Nil, Nil )
oPDF:DrawText( nLinha, 16, CLIENTES->NRAZ_SOC, Nil, 10, "Helvetica", Nil, Nil )
nLinha += 2
DBSKIP()
ENDDO
oPDF:DrawLine( nLinha, 0, nLinha, nMaxCol, 1 )
oPDF:End( )
ELSE
DBSELECTAREA("CLIENTES")
Ordsetfocus(2)
CLIENTES->( DBGOTOP() )
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(FLAG->n_xNome), nil, 10, "Helvetica-Bold", Nil, Nil )
oPDF:DrawText( 6, 0, RTRIM(FLAG->n_xLgr) + ', ' + RTRIM(FLAG->n_nro), Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 7, 0,'BAIRRO - ' + RTRIM(FLAG->n_xBairro), Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 8, 0, "CEP " +FLAG->n_CEP + ' - ' + RTRIM(FLAG->n_xMun) + ' - ' + FLAG->n_xUF + " - FONE: " +FLAG->n_fone, Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawText( 9, 0, 'CNPJ-'+RTRIM(FLAG->n_CNPJ) + ' Insc.Est.-' + RTRIM(FLAG->n_IE) , 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/RAZAO SOCIAL", Nil, 8, "Helvetica", Nil, Nil )
oPDF:DrawLine( 12, 0, 12, nMaxCol, 1 )
nLinha := 13
nLenItem := 20
nLenUnit := 7
nLenVlrUni := 19
nLenDescri := ( nMaxCol - ( nLenItem + nLenUnit + nLenVlrUni ) )
DO WHILE ! EOF()
IF nLinha > 70
oPDF:AddPage()
nLinha := 0
ENDIF
oPDF:DrawText( nLinha, 0, CLIENTES->UCLIENTE, Nil, 08, "Helvetica", Nil, Nil )
oPDF:DrawText( nLinha++, 7, CLIENTES->NRAZ_SOC, Nil, 08, "Helvetica", Nil, Nil )
CLIENTES->(DBSKIP())
ENDDO
oPDF:End( )
ENDIF
oPDF:PrintPreview( )
RETURN NIL
07 Abr 2020 14:39
07 Abr 2020 17:43
07 Abr 2020 19:12
11 Abr 2020 15:19
11 Abr 2020 15:26
11 Abr 2020 22:14
Itamar M. Lins Jr. escreveu:Ola!
Tem que criar o browse da mesma forma que fazemos com HTML.
Temos que usar a "flag" LIMITE no código SQL e no browse guardar a posição. Chamar 50 de cada vez, senão fica horrível, nem funciona, precisamos PAGINAR, as consultas SQL com mais de 10 mil registros por exemplo, não podemos chamar tudo de vez.
Esse são os detalhes, o pulo do gato que ainda não vi, e as consultas PAI->FILHO de milhares de NFe por exemplo.
Saudações,
Itamar M. Lins Jr.
12 Abr 2020 11:41
Itamar M. Lins Jr. escreveu:Tem que criar o browse da mesma forma que fazemos com HTML.
Temos que usar a "flag" LIMITE no código SQL e no browse guardar a posição.
Chamar 50 de cada vez, senão fica horrível, nem funciona, precisamos PAGINAR, as consultas SQL com mais de 10 mil registros por exemplo, não podemos chamar tudo de vez.Esse são os detalhes, o pulo do gato que ainda não vi, e as consultas PAI->FILHO de milhares de NFe por exemplo.
12 Abr 2020 14:10
50 de cada vez? acho que tá brincando
do tipo pedido e produtos? só fazer o comando SQL.
13 Abr 2020 09:21
Itamar M. Lins Jr. escreveu:Meu cadastro de clientes é enorme, tem fields para dar e vender...
13 Abr 2020 09:44
13 Abr 2020 10:26
, e é justamente aí que o DBF perde, porque trás sempre TUDO.