Jump to content
Fivewin Brasil

Usar 2 xBrowse


ram_bh

Recommended Posts

Prezados,

Estou precisando mostrar em uma Window dois xBrowse: um com a relação de pedidos e outro com os itens dos pedidos.

É possível? Acredito que sim... Alguém pode postar parte de um exemplo em código?

Obrigado!

Rodrigo Melo

Belo Horizonte

Link to comment
Share on other sites


oBrw := TxBrowse():New( oDlg )

oBrw:CreateFromResource( 4003 )

ADD COLUMN TO XBROWSE oBrw DATA SIM_NAO TITLE "S/N" PICTURE "!" SIZE 40

ADD COLUMN TO XBROWSE oBrw DATA VA_NUMPEDI TITLE "Nº Ped." PICTURE "999999" SIZE 65

ADD COLUMN TO XBROWSE oBrw DATA VA_VALPRES TITLE "Vr.Prestação" PICTURE "@E 999,999.99" SIZE 90 COLORS 128

ADD COLUMN TO XBROWSE oBrw DATA CalcPrestacao(&cArquivo->VA_VALPRES,&cArquivo->VA_DATVENC) TITLE "Vr.à Pagar" PICTURE "@E 999,999.99" SIZE 90 COLORS 128

ADD COLUMN TO XBROWSE oBrw DATA VA_DATVENC TITLE "Vencimento" PICTURE "@D 99/99/9999" SIZE 100 COLORS 128

ADD COLUMN TO XBROWSE oBrw DATA VA_DATMOV TITLE "Movimento" PICTURE "@D 99/99/9999" SIZE 100

/* Filtra os Dados conforme o Pedido Selecionado, atualiza o Array do Browse Seguinte */

oBrw:bCHANGE := {|| FiltrarDd(&cArquivo->VA_NUMPEDI) }

oBrw:BLClicked := {|| FiltrarDd(&cArquivo->VA_NUMPEDI), oBrw:Refresh(), oBrw:SetFocus() }

******************************************************

* Browse Mostra os Produtos conforme o Pedido selecionado no browse anterior

***************************************************************

REDEFINE COLUMN XBROWSE oBrw1 ID 4004 OF oDlgCrediario UPDATE

ADD COLUMN TO XBROWSE oBrw1 DATA ARRAY ELEM 1 TITLE "" PICTURE "@!X" SIZE 12

ADD COLUMN TO XBROWSE oBrw1 DATA ARRAY ELEM 2 TITLE "Referência" PICTURE "@!X" SIZE 70 INDEX 2

ADD COLUMN TO XBROWSE oBrw1 DATA ARRAY ELEM 3 TITLE "Descrição" PICTURE "@!X" SIZE 350 INDEX 3

ADD COLUMN TO XBROWSE oBrw1 DATA ARRAY ELEM 4 TITLE "Qtde" PICTURE "999.99" SIZE 50 INDEX 4

ADD COLUMN TO XBROWSE oBrw1 DATA ARRAY ELEM 5 TITLE "Tt.Produto" PICTURE "@E 9,999.99" SIZE 100 INDEX 5

ADD COLUMN TO XBROWSE oBrw1 DATA ARRAY ELEM 6 TITLE "Caixa" PICTURE "@!X" SIZE 150

Link to comment
Share on other sites

Este é um exemplo de clientes e seus pedidos, mas o conceito é o mesmo.

function rproc_pedido_saida(objetpedido)
         private salvavarPesGen := "A"

         novo_pedido(objetpedido)
		 
         define dialog listbox_saida title "Consulta Pedidos" from 000,000 to 513,1020 pixel brush obrushsuspenso STYLE nOr( WS_BORDER, WS_POPUP, WS_VISIBLE ) transparent

                @ 0.1,0.3 to 1.5,72.7  label "" of listbox_saida color corfrtsaysuspensa,corfdosaysuspensa
                @ 1.7,0.3 to 17.9,72.7 label "" of listbox_saida color corfrtsaysuspensa,corfdosaysuspensa

                asamplzfornecedores  = {""}
                arecfornecedores     = {}
                atipofornecedores    = {"Cliente","Fantasia","Parte do nome","CNPJ","CPF","Cidade","Estado"}
                mtipofornecedores    = "Cliente"
                mpesquisafornecedores = space(300)
                ncontrole = 1

                asamplzconsentrada  = {""}
                arecconsentrada     = {}
				
		mAchaProcuraPedido = "N"

				
                @ 009,153 say "Linhas na grade:" of listbox_saida font mtahoma size 050,9 color corfrtsaysuspensa,corfdosaysuspensa pixel
                @ 007,203 get oqtdlinhasgradepedido var qtdlinhasgradepedido picture "9999" font mtahoma size 19,12 of listbox_saida color corfrtget,corfdoget pixel right

                @ 009,225 say "Cliente:" of listbox_saida font mtahoma size 050,9 color corfrtsaysuspensa,corfdosaysuspensa pixel
                @ 007,250 combobox otipofornecedores var mtipofornecedores items atipofornecedores font mtahoma size 050,25 of listbox_saida color corfrtget,corfdoget pixel //when .f.
                @ 007,301 get opesquisafornecedores var mpesquisafornecedores picture "@!" font mtahoma size 200,12 of listbox_saida color corfrtget,corfdoget pixel on change enche_pedido_geral(objetpedido)

				@ 007,501 buttonbmp obutbarras bitmap "" left prompt "X" textright size 6, 14 font mtahomabold of listbox_saida pixel action ( (mAchaProcuraPedido := "S"),listbox_saida:end() ) 

                @ 029.5,005 listbox obrzfornecedores fields asamplzfornecedores[obrzfornecedores:nat,1],asamplzfornecedores[obrzfornecedores:nat,2],;
                            asamplzfornecedores[obrzfornecedores:nat,3],asamplzfornecedores[obrzfornecedores:nat,4],asamplzfornecedores[obrzfornecedores:nat,5];
                            headers "Codigo","Cliente","Cidade","Estado","CNPJ/CPF" FIELDSIZES 060,650,100,050,110;
                            size 500,100 on click ver_notas_pedido(objetpedido) on change ver_notas_pedido(objetpedido);
                            pixel of listbox_saida
                obrzfornecedores:nLineStyle := 2
                obrzfornecedores:lCellStyle = .t.
                obrzfornecedores:lAutoSkip  = .t.
                obrzfornecedores:SetArray(asamplzfornecedores)
                obrzfornecedores:bGoTop = { || obrzfornecedores:nat := 1 }
                obrzfornecedores:bGoBottom = { || obrzfornecedores:nat := Eval( obrzfornecedores:bLogicLen ) }
                obrzfornecedores:bSkip = { | nWant, nOld | nOld := obrzfornecedores:nat, obrzfornecedores:nat += nWant,;
                obrzfornecedores:nat := Max( 1, Min( obrzfornecedores:nat, Eval( obrzfornecedores:bLogicLen ) ) ),;
                obrzfornecedores:nat - nOld }
                obrzfornecedores:bLogicLen = { || Len( asamplzfornecedores ) }
                obrzfornecedores:cAlias = "Array"
                obrzfornecedores:nColAct       := 1
                obrzfornecedores:lMChange      := .F.
                obrzfornecedores:SetFocus()
                obrzfornecedores:Refresh()

                @ 130,005 listbox obrzconsentrada fields asamplzconsentrada[obrzconsentrada:nat,1],asamplzconsentrada[obrzconsentrada:nat,2],;
                           asamplzconsentrada[obrzconsentrada:nat,3],asamplzconsentrada[obrzconsentrada:nat,4],asamplzconsentrada[obrzconsentrada:nat,5],;
                           asamplzconsentrada[obrzconsentrada:nat,6],asamplzconsentrada[obrzconsentrada:nat,7],;
                           asamplzconsentrada[obrzconsentrada:nat,8],asamplzconsentrada[obrzconsentrada:nat,9];
                           headers "Pedido","Data","Hora","Valor Bruto","Valor Liquido","Itens","Situacao","Nro da NF","Cliente";
                           FIELDSIZES 060,060,065,100,100,065,070,150,330;
                           size 500,120 on dblclick ralt_pedido(objetpedido);
                           pixel of listbox_saida
                //obrzconsentrada:nClrPane      := {|| iif(asamplzconsentrada[obrzconsentrada:nat,7] = 'Sim',corlstbxnormal,iif(empty(asamplzconsentrada[obrzconsentrada:nat,7]),corlstbxnormal,corlstbxdifere)) }
                obrzconsentrada:nLineStyle := 2
                obrzconsentrada:lCellStyle = .f.
                obrzconsentrada:lAutoSkip  = .t.
                obrzconsentrada:aJustify  := { .F.,.F.,.F.,.T.,.T.,.T.,.F.,.F.,.F.}
                obrzconsentrada:SetArray(asamplzconsentrada)
                obrzconsentrada:bGoTop = { || obrzconsentrada:nat := 1 }
                obrzconsentrada:bGoBottom = { || obrzconsentrada:nat := Eval( obrzconsentrada:bLogicLen ) }
                obrzconsentrada:bSkip = { | nWant, nOld | nOld := obrzconsentrada:nat, obrzconsentrada:nat += nWant,;
                obrzconsentrada:nat := Max( 1, Min( obrzconsentrada:nat, Eval( obrzconsentrada:bLogicLen ) ) ),;
                obrzconsentrada:nat - nOld }
                obrzconsentrada:bLogicLen = { || Len( asamplzconsentrada ) }
                obrzconsentrada:cAlias = "Array"
                obrzconsentrada:nColAct       := 1
                obrzconsentrada:lMChange      := .F.
                obrzconsentrada:SetFocus()
                obrzconsentrada:Refresh()

                mtipopesquisa = 1

                @ 009,005 say "Tipo" of listbox_saida font mtahoma size 65,8.5 color corfrtsay,corfdosay pixel
                @ 008,020 radio otipopesquisa VAR mtipopesquisa OF listbox_saida color corfrtsayds,corfdosay pixel size 40,10 on change ver_notas_geral(objetpedido,1)
                oradio := TRadio():New( 008,018, 'Tudo',         ;
                                       .T.              ,        ;
                                       .T.              ,        ;
                                       1, listbox_saida, otipopesquisa, , , , , .F., , ;
                                       20, 10, , .F., .T. )
                otipopesquisa:AddRadio( oradio )
                oradio := TRadio():New( 008,044, 'Pendente',     ;
                                       .F.               ,       ;
                                       .F.               ,       ;
                                       2, listbox_saida, otipopesquisa, , , , , .F., , ;
                                       30, 10, , .F., .T. )
                otipopesquisa:AddRadio( oradio )
                oradio := TRadio():New( 008,078, 'Liberado',     ;
                                       .F.               ,       ;
                                       .F.               ,       ;
                                       3, listbox_saida, otipopesquisa, , , , , .F., , ;
                                       30, 10, , .F., .T. )
                otipopesquisa:AddRadio( oradio )
                oradio := TRadio():New( 008,111, 'Cancelado',    ;
                                       .F.               ,       ;
                                       .F.               ,       ;
                                       4, listbox_saida, otipopesquisa, , , , , .F., , ;
                                       33, 10, , .F., .T. )
                otipopesquisa:AddRadio( oradio )


                listbox_saida:bKeyDown := {|nKey| IIf( nKey == VK_RETURN,listbox_saida:end(),0)}

         activate dialog listbox_saida center on init ( ver_notas_geral(objetpedido,2) )
         if GetKeyState(VK_RETURN) .or. !GetKeyState(VK_ESCAPE)
            if mAchaProcuraPedido = "N"
			   ralt_pedido(objetpedido)
			endif
         endif
         salvavarPesGen := "A"
return nil

function enche_pedido_geral(objetpedido)
         if empty(opesquisafornecedores:cText)
             asamplzfornecedores  = {""}
             arecfornecedores     = {}
             obrzfornecedores:SetArray(asamplzfornecedores)
             obrzfornecedores:refresh()

             asamplzconsentrada  = {""}
             arecconsentrada     = {}
             obrzconsentrada:SetArray(asamplzconsentrada)
             obrzconsentrada:refresh()
             return .t.
         endif

         asamplzfornecedores  = {}
         arecfornecedores     = {}
         if mtipofornecedores = "Cliente"
                cquery := "select * from fncliente where " +;
                          "substr(razaosocial,1"+","+alltrim(str(len(alltrim(opesquisafornecedores:cText))))+")"+;
                          " = " + "'"+alltrim(opesquisafornecedores:cText)+"'"
                cquery += " order by razaosocial asc;"
         elseif mtipofornecedores = "Fantasia"
                cquery := "select * from fncliente where " +;
                          "substr(fantasia,1"+","+alltrim(str(len(alltrim(opesquisafornecedores:cText))))+")"+;
                          " = " + "'"+alltrim(opesquisafornecedores:cText)+"'"
                cquery += " order by fantasia asc;"
         elseif mtipofornecedores = "Parte do nome"
                cquery := "select * from fncliente where " +;
                          "razaosocial like " + "'%"+alltrim(opesquisafornecedores:cText)+"%'"
                cquery += " order by razaosocial asc;"
         elseif mtipofornecedores = "CNPJ"
                cquery := "select * from fncliente where " +;
                          "substr(numerodocumentonacional,1"+","+alltrim(str(len(alltrim(opesquisafornecedores:cText))))+")"+;
                          " = " + "'"+alltrim(opesquisafornecedores:cText)+"'" +;
                          " and pessoafisicajuridica = 'J'"
                cquery += " order by numerodocumentonacional asc;"
         elseif mtipofornecedores = "CPF"
                cquery := "select * from fncliente where " +;
                          "substr(numerodocumentonacional,1"+","+alltrim(str(len(alltrim(opesquisafornecedores:cText))))+")"+;
                          " = " + "'"+alltrim(opesquisafornecedores:cText)+"'" +;
                          " and pessoafisicajuridica = 'F'"
                cquery += " order by numerodocumentonacional asc;"
         elseif mtipofornecedores = "Cidade"
                cquery := "select * from fncliente where " +;
                          "substr(cidadeibge,1"+","+alltrim(str(len(alltrim(opesquisafornecedores:cText))))+")"+;
                          " = " + "'"+alltrim(opesquisafornecedores:cText)+"'"
                cquery += " order by cidadeibge asc, razaosocial asc;"
         elseif mtipofornecedores = "Estado"
                cquery := "select * from fncliente where " +;
                          "substr(uf,1"+","+alltrim(str(len(alltrim(opesquisafornecedores:cText))))+")"+;
                          " = " + "'"+alltrim(opesquisafornecedores:cText)+"'"
                cquery += " order by uf asc, razaosocial asc;"
         endif
         oquery := oServer:Query(cquery)
         DO WHILE ! oquery:Eof()
            a = oquery:Fieldget(oquery:Fieldpos('seqcliente'))
            b = oquery:Fieldget(oquery:Fieldpos('razaosocial'))
            c = oquery:Fieldget(oquery:Fieldpos('cidadeibge'))
            d = oquery:Fieldget(oquery:Fieldpos('uf'))
            e = oquery:Fieldget(oquery:Fieldpos('numerodocumentonacional'))
            if empty(e)
               e = space(14)
            else
               if len(alltrim(e)) >= 14
                  e = transform(e,"@r 99.999.999/9999-99")
               else
                  e = transform(e,"@r 999.999.999-99")
               endif
            endif
            if !empty(a)
               aadd( asamplzfornecedores,{alltrim(str(a)),b,c,d,e} )
               aadd( arecfornecedores,a )
            endif
			oquery:Skip()
			sysrefresh()
         END
         oquery:destroy()
         if empty( asamplzfornecedores )
             asamplzfornecedores  = {""}
             arecfornecedores     = {}
         endif
         obrzfornecedores:SetArray(asamplzfornecedores)
         obrzfornecedores:refresh()

         asamplzconsentrada  = {""}
         arecconsentrada     = {}
         obrzconsentrada:SetArray(asamplzconsentrada)
         obrzconsentrada:refresh()
return nil
function pega_situacao_pedido(mtipopesquisa)
         if mtipopesquisa = 2
            cquery += " and situacaopedido = 1"
         elseif mtipopesquisa = 3
            cquery += " and situacaopedido = 2"
         elseif mtipopesquisa = 4
            cquery += " and situacaopedido = 3"
         endif
return nil
function ver_notas_geral(objetpedido,objcontrole)

         if objcontrole = 1 .and. ncontrole = 1
            return nil
         endif
         ++ncontrole

 	  mAchaProcuraPedido = "N"

	  mpesquisafornecedores = space(300)
         opesquisafornecedores:ctext := mpesquisafornecedores

         fwait("  ...Aguarde processando...")

         asamplzfornecedores  = {""}
         arecfornecedores     = {}
         obrzfornecedores:SetArray(asamplzfornecedores)
         obrzfornecedores:refresh()

         asamplzconsentrada  = {}
         arecconsentrada     = {}
         czquery := "select * from ftpedido where"+;
                    " pedidoromaneio = " + "'"+"P"+"'"+;
					" and entradasaida = 'S'"+;
                    " and loja = " + alltrim(str(zseqloja))
         czquery += iif(mtipopesquisa = 2," and situacaopedido = 1",iif(mtipopesquisa = 3," and situacaopedido = 2",iif(mtipopesquisa = 4," and situacaopedido = 3","")))
         czquery += " order by datapedido desc, numerodopedido desc;"
         ozquery := oServer:Query(czquery)
         nQtdContado = 0
         DO WHILE ! ozquery:Eof()
            aitens = ozquery:Fieldget(ozquery:Fieldpos('seqpedido'))
            bitens = ozquery:Fieldget(ozquery:Fieldpos('numerodopedido'))
            citens = ozquery:Fieldget(ozquery:Fieldpos('datapedido'))
            ditens = ozquery:Fieldget(ozquery:Fieldpos('horadopedido'))
            fitens = ozquery:Fieldget(ozquery:Fieldpos('situacaopedido'))
            gitens = ozquery:Fieldget(ozquery:Fieldpos('numeronotafiscal'))
            hitens = ozquery:Fieldget(ozquery:Fieldpos('controledocumento'))
            mAdescontoacrescimo = ozquery:Fieldget(ozquery:Fieldpos('descontopercentualvalor'))
            mAvaloroupercentualdesconto = ozquery:Fieldget(ozquery:Fieldpos('valoroupercentualdesconto'))
            iitens = ozQuery:Fieldget(ozQuery:Fieldpos('razaosocial'))

            cwquery := "select * from ftnotafiscal where"+;
                       " controledocumento = " + alltrim(str(hitens))
            cwquery += " order by controledocumento asc;"
            owquery := oServer:Query(cwquery)
            //tPchavedanotafiscal = owquery:Fieldget(owquery:Fieldpos('chavedanotafiscal'))
            nsta = owQuery:Fieldget(owQuery:Fieldpos('statusdanotafiscal'))
            owquery:destroy()

            nsituacao = ""
            if nsta = "01"
              nsituacao = "Digitacao"
            elseif nsta = "02"
               nsituacao = "Validada"
            elseif nsta = "03"
               nsituacao = "Aguar.. recibo"
            elseif nsta = "04"
               nsituacao = "Aguar.. protocolo"
            elseif nsta = "05"
               nsituacao = "Autorizada"
            elseif nsta = "06"
               nsituacao = "Cancelada"
            elseif nsta = "07"
               nsituacao = "Inutilizada"
            elseif nsta = "08"
               nsituacao = "Denegada"
            endif

            //iitens = tPchavedanotafiscal

            mAtotaldeitens    = 0
            mAsubtotaldositens = 0
            mAtotaldopedido   = 0

            if !empty(aitens)

               cwquery := "select * from ftpedidoitem where "+;
                          "idpedido = " + alltrim(str(aitens)) +;
                          " order by seqitempedido asc;"
               owquery := oServer:Query(cwQuery)
               DO WHILE ! owquery:Eof()
                  tqtdpedida = owquery:Fieldget(owquery:Fieldpos('qtdpedida'))
                  tvalorvendaunitario  = owquery:Fieldget(owquery:Fieldpos('valorvendaunitario'))
                  ttotaldoitem = owquery:Fieldget(owquery:Fieldpos('totaldoitem'))

                  if empty(ttotaldoitem)
                     mAtotaldeitens = mAtotaldeitens + tqtdpedida
                     mAsubtotaldositens = mAsubtotaldositens + round((tqtdpedida * tvalorvendaunitario),2)
                  else
                     mAtotaldeitens = mAtotaldeitens + tqtdpedida
                     mAsubtotaldositens = mAsubtotaldositens + ttotaldoitem
                  endif
		  owquery:Skip()
		  sysrefresh()
               END
               owquery:destroy()

               if mAvaloroupercentualdesconto > 0
                  if mAdescontoacrescimo = 1      // percentual
                     mAtotaldopedido = mAsubtotaldositens - (( mAsubtotaldositens * mAvaloroupercentualdesconto )/100)
                  elseif mAdescontoacrescimo = 2  // valor
                     mAtotaldopedido = mAsubtotaldositens - mAvaloroupercentualdesconto
                  endif
               else
                  mAtotaldopedido = mAsubtotaldositens
               endif

               aadd( asamplzconsentrada,{alltrim(str(bitens)),dtoc(citens),alltrim(ditens),;
                     transform(mAsubtotaldositens,"@e 999,999,999.99"),;
                     transform(mAtotaldopedido,"@e 999,999,999.99"),;
                     alltrim(str(mAtotaldeitens)),;
                     iif(fitens = 1,"Digitacao",iif(fitens = 2,"Liberado",iif(fitens = 3,"Cancelado",""))),;
                     iif(empty(gitens),"",alltrim(str(gitens))) + iif(!empty(nsituacao)," | "+ nsituacao,""),iitens })
               aadd( arecconsentrada,aitens )

            endif
	    ozquery:Skip()
	    sysrefresh()
            ++nQtdContado
            if qtdlinhasgradepedido > 0
               if nQtdContado >= qtdlinhasgradepedido
                  exit
               endif
            endif
         END
         ozquery:destroy()
         obrzconsentrada:SetArray(asamplzconsentrada)
         obrzconsentrada:refresh()

         odlgwait:end()
return nil

function ver_notas_pedido(objetpedido)
         if empty(asamplzfornecedores)
            return nil
         endif
         if len(arecfornecedores) <= 0
            return nil
         endif
		 
         if arecfornecedores[obrzfornecedores:nat] > 0

            fwait("  ...Aguarde processando...")

            malteitens = arecfornecedores[obrzfornecedores:nat]
            asamplzconsentrada  = {}
            arecconsentrada     = {}
            czquery := "select * from ftpedido where"+;
                       " idcliente = " + alltrim(str(malteitens)) +;
                       " and pedidoromaneio = " + "'"+"P"+"'"+;
                       " and entradasaida = 'S'"+;
 		       " and loja = " + alltrim(str(zseqloja))
            czquery += iif(mtipopesquisa = 2," and situacaopedido = 1",iif(mtipopesquisa = 3," and situacaopedido = 2",iif(mtipopesquisa = 4," and situacaopedido = 3","")))
            czquery += " order by datapedido desc, numerodopedido asc;"
            ozquery := oServer:Query(czquery)
            nQtdContado = 0
            DO WHILE ! ozquery:Eof()
               aitens = ozquery:Fieldget(ozquery:Fieldpos('seqpedido'))
               bitens = ozquery:Fieldget(ozquery:Fieldpos('numerodopedido'))
               citens = ozquery:Fieldget(ozquery:Fieldpos('datapedido'))
               ditens = ozquery:Fieldget(ozquery:Fieldpos('horadopedido'))
               fitens = ozquery:Fieldget(ozquery:Fieldpos('situacaopedido'))
               gitens = ozquery:Fieldget(ozquery:Fieldpos('numeronotafiscal'))
               hitens = ozquery:Fieldget(ozquery:Fieldpos('controledocumento'))
               mAdescontoacrescimo = ozquery:Fieldget(ozquery:Fieldpos('descontopercentualvalor'))
               mAvaloroupercentualdesconto = ozquery:Fieldget(ozquery:Fieldpos('valoroupercentualdesconto'))
               iitens = ozQuery:Fieldget(ozQuery:Fieldpos('razaosocial'))

               cwquery := "select * from ftnotafiscal where"+;
                          " controledocumento = " + alltrim(str(hitens))
               cwquery += " order by controledocumento asc;"
               owquery := oServer:Query(cwquery)
               //tPchavedanotafiscal = owquery:Fieldget(owquery:Fieldpos('chavedanotafiscal'))
               nsta = owQuery:Fieldget(owQuery:Fieldpos('statusdanotafiscal'))
               owquery:destroy()
               nsituacao = ""
               if nsta = "01"
                 nsituacao = "Digitacao"
               elseif nsta = "02"
                  nsituacao = "Validada"
               elseif nsta = "03"
                  nsituacao = "Aguar.. recibo"
               elseif nsta = "04"
                  nsituacao = "Aguar.. protocolo"
               elseif nsta = "05"
                  nsituacao = "Autorizada"
               elseif nsta = "06"
                  nsituacao = "Cancelada"
               elseif nsta = "07"
                  nsituacao = "Inutilizada"
               elseif nsta = "08"
                  nsituacao = "Denegada"
               endif

               //iitens = tPchavedanotafiscal

               mAtotaldeitens    = 0
               mAsubtotaldositens = 0
               mAtotaldopedido   = 0

               if !empty(aitens)
                  cwquery := "select * from ftpedidoitem where "+;
                             "idpedido = " + alltrim(str(aitens)) +;
                             " order by seqitempedido asc;"
                  owquery := oServer:Query(cwQuery)
                  DO WHILE ! owquery:Eof()
                     tqtdpedida = owquery:Fieldget(owquery:Fieldpos('qtdpedida'))
                     tvalorvendaunitario  = owquery:Fieldget(owquery:Fieldpos('valorvendaunitario'))
                     ttotaldoitem = owquery:Fieldget(owquery:Fieldpos('totaldoitem'))

                     if empty(ttotaldoitem)
                        mAtotaldeitens = mAtotaldeitens + tqtdpedida
                        mAsubtotaldositens = mAsubtotaldositens + round((tqtdpedida * tvalorvendaunitario),2)
                     else
                        mAtotaldeitens = mAtotaldeitens + tqtdpedida
                        mAsubtotaldositens = mAsubtotaldositens + ttotaldoitem
                     endif
		     owquery:Skip()
		     sysrefresh()
                  END
                  owquery:destroy()

                  if mAvaloroupercentualdesconto > 0
                     if mAdescontoacrescimo = 1      // percentual
                        mAtotaldopedido = mAsubtotaldositens - (( mAsubtotaldositens * mAvaloroupercentualdesconto )/100)
                     elseif mAdescontoacrescimo = 2  // valor
                        mAtotaldopedido = mAsubtotaldositens - mAvaloroupercentualdesconto
                     endif
                  else
                     mAtotaldopedido = mAsubtotaldositens
                  endif

                  aadd( asamplzconsentrada,{alltrim(str(bitens)),dtoc(citens),alltrim(ditens),;
                        transform(mAsubtotaldositens,"@e 999,999,999.99"),;
                        transform(mAtotaldopedido,"@e 999,999,999.99"),;
                        alltrim(str(mAtotaldeitens)),;
                        iif(fitens = 1,"Digitacao",iif(fitens = 2,"Liberado",iif(fitens = 3,"Cancelado",""))),;
                        iif(empty(gitens),"",alltrim(str(gitens))) + iif(!empty(nsituacao)," | "+ nsituacao,""),iitens })
                  aadd( arecconsentrada,aitens )

               endif
			   ozquery:Skip()
			   sysrefresh()
               ++nQtdContado
               if qtdlinhasgradepedido > 0
                  if nQtdContado >= qtdlinhasgradepedido
                     exit
                  endif
               endif
            END
            ozquery:destroy()
            obrzconsentrada:SetArray(asamplzconsentrada)
            obrzconsentrada:refresh()

            odlgwait:end()

         endif
return nil
function ralt_pedido(objetpedido)
         if len(arecconsentrada) <= 0
            return nil
         endif
         if arecconsentrada[obrzconsentrada:nat] > 0

            novo_pedido(objetpedido)

            malte = arecconsentrada[obrzconsentrada:nat]
            cquery := "select * from ftpedido where"+;
                      " seqpedido = " + alltrim(str(malte)) +;
                      " and pedidoromaneio = 'P'"+;
					  " and entradasaida = 'S'"+;
                      " order by seqpedido asc;"
            oquery := oServer:Query(cQuery)
            mPnumerodopedido = oQuery:Fieldget(oQuery:Fieldpos('numerodopedido'))
            oPnumerodopedido:ctext := mPnumerodopedido
            oquery:destroy()
            listbox_saida:end()
            oPnumerodopedido:setfocus()
            oPnumerodopedido:gotfocus()
			
	    mAchaProcuraPedido = "S"

            keyboard(chr(9))

            oPcodigoproduto:setfocus()
            oPcodigoproduto:gotfocus()
         endif
return nil

Link to comment
Share on other sites

Luiz

Segue exemplo com xBrowse:

   DEFINE WINDOW oWnd201 FROM 0,1 TO 32,82 TITLE "Cadastro de Projetos"  ;
	    MDICHILD OF oTelaPrincipal  ;
	    COLOR CLR_BLACK, GetSysColor( COLOR_BTNFACE )


   aBrw:= {{"",{|| "" },30,0} ,;
	        {"Num. OS",{|| ProBrw->COD_PROJ },60,0} ,{"Nome",{|| ProBrw->Nome },300,0},;
	        {"Empresa Responsável",{|| ProBrw->EmpRaz },250,0},;
			  {"Cod. Proposta",{|| ProBrw->Cod_proposta },90,0}, {"Cliente",{|| ProBrw->NOme2 },200,0},;
			  {"Dt. Inicial",{|| ProBrw->Data_ini },80,0}, {"Dt. Final",{|| ProBrw->Data_fim },80,0},;
			  {"Tolerância",{|| ProBrw->Dias_toler },60,0},{"Status",{|| ProBrw->Status },100,0},;
			  {"Dt. Encerramento",{|| ProBrw->Data_ence },80,0} }
  

   oBrw := CRIA_BRW(@oBrw,oWnd201,aBrw,"ProBrw",,280,oTelaPrincipal:nWidth-50)
     
   oBrw:bLclicked := {|| ( ATUBRW2( oBrw2,ProBrw->COD_PROJ ), oBrw2:Refresh() ) }

	oBrw:nTop := 70


   @ 350,0 SPLITTER oHSplit HORIZONTAL PREVIOUS CONTROLS oBrw HINDS CONTROLS oBrw2    ;
           TOP MARGIN 80 BOTTOM MARGIN 80  SIZE 500, 4 PIXEL OF oWnd201  _3DLOOK
                             
   aBrw2:= {{"",{|| "" },30,0} ,;
	        {"Item",{|| Str(ProBrw2->COD_ITEM,5) },50,0} ,{"Descrição",{|| ProBrw2->Descr },300,0},;
	        {"Responsável",{|| ProBrw2->NomeR },200,0},;
			  {"Horas Previstas",{|| ProBrw2->HORAS_PREV },100,0},;
			  {"Dt. Inicial",{|| ProBrw2->Data_ini },80,0}, {"Dt. Final",{|| ProBrw2->Data_fim },80,0},;
			  {"Tolerância",{|| ProBrw2->Dias_toler },60,0},{"Status",{|| ProBrw2->Status },100,0},;
			  {"Dt. Encerramento",{|| ProBrw2->Data_enc },80,0},;
			  {"Total",{|| RetTotResv(ProBrw2->COD_ITEM,ProBrw->COD_PROJ) },80,0},;
			  {"%",{|| iif(RetTotResv(ProBrw2->COD_ITEM,ProBrw->COD_PROJ)>0,Str((RetTotResv(ProBrw2->COD_ITEM,ProBrw->COD_PROJ)*100)/ProBrw2->HORAS_PREV,6,2),"0")  },80,0}  }
  
   oBrw2 := CRIA_BRW(@oBrw2,oWnd201,aBrw2,"ProBrw2",,350,oTelaPrincipal:nWidth-50)

	oBrw2:nTop := 355



   ACTIVATE WINDOW oWnd201 MAXIMIZED ON INIT ( oBrw:Adjust(),oBrw2:Adjust(),oBrw:Refresh(),oBrw2:Refresh(),oBrw:SetFocus()) ;
	       VALID ( lAtivaWnd:=.F.,ProBrw->( DbCloseArea() ),.T. ) 


//----------------------------------------------------------------------------
Static Function ATUBRW2( pBrow2, pProj )

ProBrw2->( DbCloseArea() )

cSql1 = "SELECT If(ITEM_PROJ.COD_PROJ='','','') AS FLAG, ITEM_PROJ.COD_PROJ, ITEM_PROJ.COD_ITEM,  "+;
	        "ITEM_PROJ.COD_EMPRESA, ITEM_PROJ.RESPONSAVEL, ITEM_PROJ.HORAS_PREV, "+;
			  "DATE_FORMAT(ITEM_PROJ.DATA_INI,'%d/%m/%Y') As DATA_INI, DATE_FORMAT(ITEM_PROJ.DATA_FIM,'%d/%m/%Y') As DATA_FIM, "+;
			  "ITEM_PROJ.DIAS_TOLER & ' dia(s)' AS DIAS_TOLER1, ITEM_PROJ.DIAS_TOLER, ITEM_PROJ.STATUS, DATE_FORMAT(ITEM_PROJ.DATA_ENCERR,'%d/%m/%Y') As DATA_ENC,ITEM.DESCR, FUNC_ATIV.NOME AS NOMER " + ;
           "FROM FUNC_ATIV RIGHT JOIN (ITEM RIGHT JOIN ITEM_PROJ ON ITEM.COD_ITEM = ITEM_PROJ.COD_ITEM) ON (FUNC_ATIV.RE = ITEM_PROJ.RESPONSAVEL) AND (FUNC_ATIV.COD_EMPRESA = ITEM_PROJ.COD_EMPRESA) " + ;
           "WHERE ITEM_PROJ.COD_PROJ = '" + pProj + "'"

USE SQL (cSql1) Alias ProBrw2 New

DbSelectArea("ProBrw2")
pBrow2:GoTop()
pBrow2:Refresh()

Return .T.


//----------------------------------------------------------------------------//
// Cria browse de cadastros
// pBrw : Objeto do Browse
// oTela : Objeto da Window
// aBrw : Vetor com os campos do browse
// cAlias : Área da tabela selecionada
// nId  : Se for resource informa o ID da tela se for Window 0
// pBot : Tamanho em linhas do Browse Bottom
// pRig : Tamanho em colunas do Browse Right
//----------------------------------------------------------------------------//
FUNCTION CRIA_BRW(pBrw,oTela,aBrw,cAlias,nId, pBot, pRig) 
Public hi

DEFAULT nId := 0

     pBrw := TxBrowse():New( oTela )
     pBrw:cAlias := cAlias
	  For hi:=1 To Len(aBrw)
         oCol := pBrw:AddCol()
         oCol:cHeader       := aBrw[hi,1]
         oCol:bStrData      := aBrw[hi,2]   //GenFieldBlock( "EmpBrw",hi)
         oCol:nDataStrAlign  := aBrw[hi,4]      // Data string alignment (left, center, right)
         oCol:nHeadStrAlign  := AL_CENTER   // Header string alignment (left, center, right)
         oCol:nWidth := aBrw[hi,3]
	  Next
     


     pBrw:nRowHeight := 15
     pBrw:nDataLines := 1 // Number of lines of the data rows
     pBrw:nHeaderLines := 1 // Number of lines of the header
     pBrw:nFooterLines := 0 // Number of lines of the footer
     pBrw:nDataType := 0 // Data type to be used: 0->rdd, 1->array, ... (more to come) If navigation codeblocks are not specified then get automatically initialized when adjusting the browse depending on this DATA value
     pBrw:nHeaderHeight := 18

     pBrw:nFreeze := 0
     pBrw:nMarqueeStyle := 5 // Marquee style (row selected) 0 No Marquee 1 Dotted cell 2 Solid cell 3 Highlight cell 4 Highlight row & Raise Cell 5 Highlight row 6 Highlight row & multiselect
     pBrw:lColDividerComplete 	:= .T.  
     pBrw:lAllowRowSizing     	:= .F.  
     pBrw:nColDividerStyle    	:= LINESTYLE_BLACK
     pBrw:SetColor(CLR_WHITE, CLR_WHITE )
     pBrw:SetFont(oFontxBro)

     pBrw:bClrSel      := {|| { CLR_WHITE, CLR_BLACK} }   // Cor da linha sem foco
 
     pBrw:bClrSelFocus  := {|| { CLR_WHITE, nRGB( 000,100, 255 ) } }   // Cor da linha selecionada fundo e frente

	  If pBot != Nil
        pBrw:nBottom  := pBot
     Endif
	  If pRig != Nil   
        pBrw:nRight   := pRig
     Endif   
         

     pBrw:GetDisplayCols()

     If nId == 0
        pBrw:CreateFromCode()
     Else   
        oBrw:CreateFromResource( nId )
     Endif        


Return pBrw
//------------------------------------------------------------------------------------------------

Att

João Bosco

Link to comment
Share on other sites

Prezados,

Obrigado pelas postagens.

Fiz da seguinte maneira: criei dois xbrowse e o primeiro faz refresh() no segundo ao movimentar o primeiro.

Assim:

@ 02.8,00 xBrowse oBrwRec Of oComRec ;
...
On Change (oBrwRei:Refresh(),oBrwRec:SetFocus())
@ (22.8),00 xBrowse oBrwRei Of oComRec ;
...
oBrwRec:CreateFromCode()
oBrwRei:CreateFromCode()
Activate Window oComRec Maximized On Init (oBrwRec:Setfocus()) Valid (oComRec:=Nil,.T.)
Um abraço!
Rodrigo Melo
Belo Horizonte / MG
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...