hello everyone
I have a survey, I will post it in full.
this database has something close to 12,188 records
- Code: Select all Expand view
*-------------------------------------------------------------------------------
*
*-------------------------------------------------------------------------------
FUNCTION LOCALIZA_NBM_NCM()
Cursor("SQL")
X := .T.
PROCURA_PESQUISA := SPACE(40)
cOrder := 'A'
T_CODI_CFOP := SPACE(05)
T_CAMPO_ORDENAR :='COD_NCM'
uRetCol := 1
T_SO_INATIVOS := (.F.)
*----------------------------------------------------------------------------
IF SELECT("nbm_ncm") != 0
nbm_ncm->(DbCloseArea())
ENDIF
cQuery:='select * from nbm_ncm order by COD_NCM '
use sql cQuery alias "nbm_ncm" new via 'MYSQL'
nbm_ncm->( DbGoTop())
*----------------------------------------------------------------------------
T_TXT_DIALOGO := ' Pesquisa de Ncm Classificação Fiscal'
DEFINE DIALOG oPES_CFOP RESOURCE "PESQUISA_SQL_INCREMENTAL" TITLE "...:: Pesquisa ::..." Font O_F_DLG
oPES_CFOP:lHelpIcon:=.F.
REDEFINE SAY oT_TXT_DIALOGO var T_TXT_DIALOGO ID 4052 OF oPES_CFOP FONT O_F_GET COLOR CLR_LWHITE,CLR_BFOOT Update
T_TXT_DIALOGO2 := ' '
REDEFINE SAY oT_TXT_DIALOGO2 var T_TXT_DIALOGO2 ID 4001 OF oPES_CFOP FONT O_F_GET COLOR CLR_LWHITE,CLR_BFOOT Update
*----------------------------------------------------------------------------
oDbx_NCM := TXBrowse():New( oPES_CFOP )
oDbx_NCM:cAlias := "nbm_ncm"
oDbx_NCM:bKeyDown :={|nKey| if(nkey=13,( T_CODI_CLASSIFICACAO := nbm_ncm->COD_NCM, oPES_CFOP:End() ),) }
oDbx_NCM:bChange :={|| T_CODI_CLASSIFICACAO := nbm_ncm->COD_NCM }
oDbx_NCM:bLDblClick :={|| T_CODI_CLASSIFICACAO := nbm_ncm->COD_NCM, oPES_CFOP:End() }
*----------------------------------------------------------------------------
oDbx_NCM:lColDividerComplete := .T.
oDbx_NCM:lFooter := .T.
oDbx_NCM:lRecordSelector := .T.
oDbx_NCM:nHeaderLines := 2
oDbx_NCM:nDataLines := 2.5
oDbx_NCM:bClrStd := {|| { IF(nbm_ncm->FINAL_VIGENCIA<=DATE(),CLR_VERMELHO,CLR_BLACK), IIF(((oDbx_NCM:cAlias)->(ORDKEYNO()))%2==0, COR_1_bClrStd , COR_2_bClrStd )}}
oDbx_NCM:bClrSelFocus := {|| { M->COR_1_bClrSelFocus, M->COR_2_bClrSelFocus } }
oDbx_NCM:bClrRowFocus := {|| { M->COR_1_bClrRowFocus, M->COR_2_bClrRowFocus } }
oDbx_NCM:nColDividerStyle := 4
oDbx_NCM:nRowDividerStyle := 4
oDbx_NCM:nMarqueeStyle := 4
oDbx_NCM:nFooterLines := 1
oDbx_NCM:lAllowColSwapping := .T. // Click no header (.f.)Trava
oDbx_NCM:lAllowRowSizing := .T. // Nao move as Linhas (nao sei)
oDbx_NCM:l2007 := M->ESTILO_l2007
oDbx_NCM:lAllowRowSizing := .T.
[b] oDbx_NCM:lSeekWild := .T.
oDbx_NCM:lIncrFilter := .T. // Liga o Filtro incremental
oDbx_NCM:nColSel := 1 // Jogar o Foco na Segunda coluna
[/b] *----------------------------------------------------------------------------
oCol := oDbx_NCM:AddCol()
oCol:bStrData := { || nbm_ncm->COD_NCM }
oCol:cHeader := "Cód"
oCol:cFooter := " "
oCol:cToolTip := {"Código NCM","Ajuda","", }
oCol:nDataStrAlign := AL_LEFT
oCol:nHeadStrAlign := AL_LEFT
oCol:bLClickHeader := {|r,c,f,o| ( oDbx_NCM:cFilterFld := 'COD_NCM', PROCURA_CLASSIFICACAO_FISCAL(cOrder,'COD_NCM',oDbx_NCM:MouseColPos( c ),T_SO_INATIVOS ) )}
oCol:cSortOrder := 'COD_NCM'
oCol:oDataFont := O_F_DLG2
oCol:oHeaderFont := O_F_GET
*-------------------------------------------------------------------------
oCol := oDbx_NCM:AddCol()
oCol :AddResource("#8411")
oCol :AddResource("#8462")
oCol:bBmpData := { || IIf(nbm_ncm->COBRANCA_MONOFASICA="S", 1, 2) }
oCol:cHeader := "Monof."
oCol:cFooter := ""
oCol:nDataStrAlign := AL_LEFT
oCol:nHeadStrAlign := AL_LEFT
oCol:bLClickHeader := {|r,c,f,o| ( oDbx_NCM:cFilterFld := 'COBRANCA_MONOFASICA', PROCURA_CLASSIFICACAO_FISCAL(cOrder,'COBRANCA_MONOFASICA',oDbx_NCM:MouseColPos( c ),T_SO_INATIVOS ) )}
oCol:cSortOrder := 'COBRANCA_MONOFASICA'
oCol:cToolTip := {"Aliquota de Pis/Cofins Monofásica","Ajuda","", }
oDbx_NCM:aCols[02]:oHeaderFont := oFont1
*-------------------------------------------------------------------------
oCol := oDbx_NCM:AddCol()
oCol:bStrData := { || TRANSFORM(nbm_ncm->ALIQUOTA_NACIONAL ,"@E 999.99")+ '%' }
oCol:cHeader := 'Nacional'
oCol:cFooter := " "
oCol:cToolTip := {"Aliquota de Imposto IBPT (Nacional)","Ajuda","", }
oCol:nDataStrAlign := AL_RIGHT
oCol:nHeadStrAlign := AL_LEFT
oCol:bLClickHeader := {|r,c,f,o| ( oDbx_NCM:cFilterFld := 'ALIQUOTA_NACIONAL', PROCURA_CLASSIFICACAO_FISCAL(cOrder,'ALIQUOTA_NACIONAL',oDbx_NCM:MouseColPos( c ),T_SO_INATIVOS ) )}
oCol:cSortOrder := 'ALIQUOTA_NACIONAL'
oDbx_NCM:aCols[03]:AddResource( "#8463" )
oDbx_NCM:aCols[03]:nBtnBmp := 1
oDbx_NCM:aCols[03]:nEditType := EDIT_BUTTON
oDbx_NCM:aCols[03]:bEditBlock := {|nRow, nCol, oCol| ( MsgInfo('Aliquota IBPT Nacional !',M->SISTEMA) ) }
oDbx_NCM:aCols[03]:lBtnTransparent := .T.
oDbx_NCM:aCols[03]:lBmpStretch := .F.
*----------------------------------------------------------------------------
oCol := oDbx_NCM:AddCol()
oCol:bStrData := { || TRANSFORM(nbm_ncm->ALIQUOTA_IMPORTACAO ,"@E 999.99")+ '%' }
oCol:cHeader := 'Impot.'
oCol:cFooter := " "
oCol:cToolTip := {"Aliquota de Imposto IBPT (Importação)","Ajuda","", }
oCol:nDataStrAlign := AL_RIGHT
oCol:nHeadStrAlign := AL_LEFT
oCol:bLClickHeader := {|r,c,f,o| ( oDbx_NCM:cFilterFld := 'ALIQUOTA_IMPORTACAO', PROCURA_CLASSIFICACAO_FISCAL(cOrder,'ALIQUOTA_IMPORTACAO',oDbx_NCM:MouseColPos( c ),T_SO_INATIVOS ) )}
oCol:cSortOrder := 'ALIQUOTA_NACIONAL'
oDbx_NCM:aCols[04]:AddResource( "#8464" )
oDbx_NCM:aCols[04]:nEditType := EDIT_BUTTON
oDbx_NCM:aCols[04]:bEditBlock := {|nRow, nCol, oCol| ( MsgInfo('Aliquota IBPT Para Importação !',M->SISTEMA) ) }
oDbx_NCM:aCols[04]:nBtnBmp := 1
oDbx_NCM:aCols[04]:lBtnTransparent := .T.
oDbx_NCM:aCols[04]:lBmpStretch := .F.
*-------------------------------------------------------------------------
WITH OBJECT oDbx_NCM
:SetGroupHeader( "Impostos Ibpt" , 03, 04, O_F_CAB_XBROWSE)
END
*-------------------------------------------------------------------------
oCol := oDbx_NCM:AddCol()
oCol:bStrData := { || TokenUpper( Lower( TiraAcento( nbm_ncm->NOME_NCM )), " w") }
oCol:cHeader := "Nome/Descrição"
oCol:cFooter := " "
oCol:cToolTip := {"Descrição","Ajuda","", }
oCol:nDataStrAlign := AL_LEFT
oCol:nHeadStrAlign := AL_LEFT
oCol:bLClickHeader := {|r,c,f,o| ( oDbx_NCM:cFilterFld := 'NOME_NCM', PROCURA_CLASSIFICACAO_FISCAL(cOrder,'NOME_NCM',oDbx_NCM:MouseColPos( c ),T_SO_INATIVOS ) )}
oCol:cSortOrder := 'NOME_NCM'
oDbx_NCM :aCols[05]:nWidth := 600
*-------------------------------------------------------------------------
oCol := oDbx_NCM:AddCol()
oCol:bStrData := { || DTOC(nbm_ncm->INICIO_VIGENCIA) +CRTLF+ DTOC(nbm_ncm->FINAL_VIGENCIA)}
oCol:cHeader := "Vigência"
oCol:cFooter := " "
oCol:cToolTip := {"Período de Vigênci","Ajuda","", }
oCol:nDataStrAlign := AL_LEFT
oCol:nHeadStrAlign := AL_LEFT
*-------------------------------------------------------------------------
oCol := oDbx_NCM:AddCol()
oCol:bStrData := { || nbm_ncm->VERSAO_TABELA }
oCol:cHeader := "Versão"
oCol:cFooter := " "
oCol:cToolTip := {"Versão da Tabela de Ncm (IBPT)","Ajuda","", }
oCol:nDataStrAlign := AL_LEFT
oCol:nHeadStrAlign := AL_LEFT
*-------------------------------------------------------------------------
oCol := oDbx_NCM:AddCol()
oCol:bStrData := { || DTOC(nbm_ncm->ULTIMA_ATUALIZACAO) }
oCol:cHeader := "Ultima Atualização"
oCol:cFooter := " "
oCol:cToolTip := {"Data da Ultima Atualização","Ajuda","", }
oCol:nDataStrAlign := AL_LEFT
oCol:nHeadStrAlign := AL_LEFT
*----------------------------------------------------------------------------
oDbx_NCM:CreateFromResource(4015)
*----------------------------------------------------------------------------
WITH OBJECT oDbx_NCM
:cFilterFld := "COD_NCM"
:bKeyDown := { |nKey| If( nKey == VK_RETURN, ( uRet := oDbx_NCM:oCol( uRetCol ):Value, oPES_CFOP:End() ), nil ) }
:bKeyChar := { |nKey| If( nKey == VK_ESCAPE, ( oDbx_NCM:Seek( "" ), oPES_CFOP:End() ), nil ) }
:bLDClickDatas := { || uRet := oDbx_NCM:oCol( uRetCol ):Value, oPES_CFOP :End() }
:AutoFit()
END
REDEFINE SAY oDbx_NCM:oSeek var oDbx_NCM:cSeek ID 4002 PICTURE "@!" OF oPES_CFOP COLOR CLR_PRETO, CLR_VD_CALRO FONT O_F_GET
*----------------------------------------------------------------------------
REDEFINE BUTTONBMP oSair_pesquisa ID 4008 OF oPES_CFOP ACTION ( oPES_CFOP:end() ) BITMAP "#8019" PROMPT "&Fechar" TEXTRIGHT
REDEFINE BUTTONBMP oExp_excel ID 4016 OF oPES_CFOP ACTION ( oDbx_NCM:ToExcel() ) BITMAP (M->BTN_EXPORTA_EXCEL) PROMPT "Ex&cel" TEXTRIGHT
oExp_excel : cToolTip := {"Exportar para"+CRLF+"o Microsoft® Excel","Ajuda","", }
*----------------------------------------------------------------------------
ACTIVATE DIALOG oPES_CFOP CENTERED
RETURN .T.
*----------------------------------------------------------------------------------------------------------------------------
Function PROCURA_CLASSIFICACAO_FISCAL(v_Ordenacao,v_Campo_Ordenar,v_Num_Col,v_Tipo_Filtro)
Default v_Tipo_Filtro:=.F.
DEFAULT v_Ordenacao :="A"
DEFAULT v_Campo_Ordenar :="COD_NCM"
DEFAULT v_Num_Col := 1
IF v_Ordenacao = 'A'
cOrder := 'D'
ELSE
cOrder := 'A'
ENDIF
*----------------------------------------------------------------------------
IF SELECT("nbm_ncm") != 0
nbm_ncm->(DbCloseArea())
ENDIF
cQuery := ' SELECT * FROM nbm_ncm'
IF v_Tipo_Filtro = (.T.)
cQuery += ' WHERE FINAL_VIGENCIA = ' + TRANSFORMA_SQL(CTOD(''),'D',08,0)
ENDIF
cQuery += ' ORDER BY ' + ALLTRIM(v_Campo_Ordenar) + IF(v_Ordenacao='A',' DESC',' ASC')
use sql cQuery alias "nbm_ncm" new via 'MYSQL'
nbm_ncm->( DbGoTop())
oDbx_NCM:oHeaderFonts := O_F_DLG
oDbx_NCM:nColSel := (v_Num_Col)
oDbx_NCM:oCol( (v_Num_Col) ):oHeaderFont := O_F_GET
oDbx_NCM :GoTop()
oDbx_NCM :Refresh()
oDbx_NCM :RefreshHeaders()
oDbx_NCM : SetFocus()
Return(.t.)