Jump to content
Apolo

PHC - Programação em XBASE

Recommended Posts

NelsonPaiva
Em 16/03/2018 às 22:01, pc.cesar disse:

é possivel  fazer isso , basta ir ás propriedades do campo e a primeira opção e dizer quem tem acesso ao campo

Mas isso nas personalizações de ecrã? Ou é possível fazer numa regra?

Share this post


Link to post
Share on other sites
camexavi

Boa tarde ;)

Venho mais uma vez solicitar a vossa ajuda.

Existe um campo no PHC na tabela de faturas, FT3.BARCODE, em que pretendo gravar um código com o seguinte formato:

(ano atual)+ft.ndoc+ft.fno

Estou a tentar criar na opção Valores por defeito no campo FT3.BARCODE mas sem sucesso

Será que podem ajudar?

Obrigado!

Share this post


Link to post
Share on other sites
pc.cesar

Vou verificar,

Mas esse campo já deveria fazer isso a partir da V21 salvo erro.

Share this post


Link to post
Share on other sites
camexavi
2 minutos atrás, pc.cesar disse:

Vou verificar,

Mas esse campo já deveria fazer isso a partir da V21 salvo erro.

Segundo informação que obtive, foi descontinuado na V22, isto é o campo existe mas não grava nada

Obrigado!

Share this post


Link to post
Share on other sites
soares chirrute

bom dia!

mais uma vez espero contar com V/ajuda, 

alguem pode me ajudar com o comando xbase para gravar imagens na base de dados?

 

Share this post


Link to post
Share on other sites
NelsonPaiva
10 horas atrás, soares chirrute disse:

bom dia!

mais uma vez espero contar com V/ajuda, 

alguem pode me ajudar com o comando xbase para gravar imagens na base de dados?

 

Um comando para gravar imagens como assim?

O que pretendes fazer?

Share this post


Link to post
Share on other sites
pc.cesar

onde e o que queres gravar,,, atenção que as imagens/ficheiros gravados na BD vão fazer a BD crescer

 

CREATE TABLE TuTabla ( Id int, Name varchar(50) not null, imagen varbinary(max) not null ) INSERT INTO TuTabla (Id, Name, imagen) SELECT 1, 'Norman', BulkColumn FROM Openrowset( Bulk 'C:\ImagenFichero.bmp', Single_Blob) as Imagen

atenção que para usar o fox tambem tem de ser validado o tamanho e tipo de ficheiro para poder extrair o mesmo

 

 

Share this post


Link to post
Share on other sites
pc.cesar
Em 17/03/2018 às 10:03, Filipe Alves disse:

Olá

E na versão Corporate existe alguma forma de se definir que os utilizadores do X não tem acessos aos artigos de stock/dossiers internos com a marca Y ?

Não.. só com filtros em advanced

Share this post


Link to post
Share on other sites
camexavi
Em 20/03/2018 às 18:31, pc.cesar disse:

Vou verificar,

Mas esse campo já deveria fazer isso a partir da V21 salvo erro.

Desculpa a insistência, consegues ajudar me?

Obrigado!

Share this post


Link to post
Share on other sites
soares chirrute
13 hours ago, pc.cesar said:

onde e o que queres gravar,,, atenção que as imagens/ficheiros gravados na BD vão fazer a BD crescer

 

CREATE TABLE TuTabla ( Id int, Name varchar(50) not null, imagen varbinary(max) not null ) INSERT INTO TuTabla (Id, Name, imagen) SELECT 1, 'Norman', BulkColumn FROM Openrowset( Bulk 'C:\ImagenFichero.bmp', Single_Blob) as Imagen

atenção que para usar o fox tambem tem de ser validado o tamanho e tipo de ficheiro para poder extrair o mesmo

 

 

 

No ecrã gestão de stocks, na janela informação adicionei mais um campo para a segunda imagem, criei um botão para adicionar e ver a imagem. Pretendo criar outro botão pra gravar

19 hours ago, NelsonPaiva said:

Um comando para gravar imagens como assim?

O que pretendes fazer?

É o seguinte na ficha de artigos, adicionei mais um campo para a segunda imagem. Agora pretendo criar um botão que me permita gravar essa imagem

Share this post


Link to post
Share on other sites
femo
22 horas atrás, soares chirrute disse:

 

No ecrã gestão de stocks, na janela informação adicionei mais um campo para a segunda imagem, criei um botão para adicionar e ver a imagem. Pretendo criar outro botão pra gravar

É o seguinte na ficha de artigos, adicionei mais um campo para a segunda imagem. Agora pretendo criar um botão que me permita gravar essa imagem

Se o objectivo for apenas a visualização das imagens dos artigos, a minha solução para o problema passaria por colocar as imagens numa pasta partilhada gravadas com o nome do ficheiro [ref].jpg, [ref]_01.jpg  e criar um botão que chamasse esse(s) ficheiro(s). Claro que o caminho de partilha tinha que ser igual em todos os PC's, por isso atribuiria uma letra de unidade (T: por exemplo). Assim não pesariam na BD e toda a gente teria acesso. (É o sistema que utilizo na minha empresa)


Fernando Morais

Share this post


Link to post
Share on other sites
soares chirrute

boas tardes,

Estou a configurar uma loja web, peço a V/ajuda para criar um menu de navegação no cabeçalho contendo  por exemplo:  Bebe, acessórios…

Share this post


Link to post
Share on other sites
PHonorato

Boa tarde.

Como é que consigo chamar um programa externo com um argumento?

Se fizer um botão e tentar chamar o programa externo com argumento dá erro (exemplo: programa.exe teste1)(mas se fizer só programa.exe funciona)

O programa externo aceita argumentos depois do nome do programa, dá através de outros programas e através de linha de comandos.

Possivelmente por programação devo conseguir, só preciso mesmo de executar o programa externo com um argumento.

Obrigado

Share this post


Link to post
Share on other sites
PHonorato

Já consegui.

E já agora como é que sei qual o valor que está no campo ref na janela dos artigos?

Share this post


Link to post
Share on other sites
JoseAC

Olá a todos,

estou a tentar construir um IDU com este valores

Tenho um campo numérico   bo.u_valorini  que quero multiplicar 1.23  que é o valor do iva

exemplo se o campo tiver 150€ quando multiplico * 1.23 , devia dar 184.50 mas da-me 185 ( assim funciona mas eu queria eu ele fosse buscar o valor do iva a tabela BI.IVA )

quando tento correr este código não aparece nada  bo.u_valorini * BI.IVA   da-me erro

Alguma ajuda agradeço,

Obrigado

José

Share this post


Link to post
Share on other sites
NelsonPaiva
15 horas atrás, JoseAC disse:

Olá a todos,

estou a tentar construir um IDU com este valores

Tenho um campo numérico   bo.u_valorini  que quero multiplicar 1.23  que é o valor do iva

exemplo se o campo tiver 150€ quando multiplico * 1.23 , devia dar 184.50 mas da-me 185 ( assim funciona mas eu queria eu ele fosse buscar o valor do iva a tabela BI.IVA )

quando tento correr este código não aparece nada  bo.u_valorini * BI.IVA   da-me erro

Alguma ajuda agradeço,

Obrigado

José

Eu tive um problema parecido e resolvi da seguinte forma:

Na expressão do campo do IDU coloca:

bo.u_valorini*((100+BI.IVA)/100)

Pode não ser a melhor forma de o fazer mas foi a forma que eu consegui de resolver.

Em relação a aparecer 185 em vez de 184.50 colocas-te mascara no campo?
Na mascara coloca @Z ###,###,###.## a ver se resolve.

EDIT: Reparei agora numa coisa que não vi antes. Tu queres calcular o valor de um campo da tabela bo com a IVA das linhas é isso ou foi um erro?
A expressão que uso é: "BI.ETTDEB*((100+BI.IVA)/100)" mas neste caso estou a calcular o IVA por linha.

Não sei se o código que enviei vai funcionar sem um join como são dois campos de tabelas diferentes. Também podes é usar um campo de IVA da tabela BO em vez do bi.iva.

Edited by NelsonPaiva
Melhoramento da resposta

Share this post


Link to post
Share on other sites
JoseAC
Em 27/06/2018 às 11:07, NelsonPaiva disse:

Eu tive um problema parecido e resolvi da seguinte forma:

Na expressão do campo do IDU coloca:

bo.u_valorini*((100+BI.IVA)/100)

Pode não ser a melhor forma de o fazer mas foi a forma que eu consegui de resolver.

Em relação a aparecer 185 em vez de 184.50 colocas-te mascara no campo?
Na mascara coloca @Z ###,###,###.## a ver se resolve.

EDIT: Reparei agora numa coisa que não vi antes. Tu queres calcular o valor de um campo da tabela bo com a IVA das linhas é isso ou foi um erro?
A expressão que uso é: "BI.ETTDEB*((100+BI.IVA)/100)" mas neste caso estou a calcular o IVA por linha.

Não sei se o código que enviei vai funcionar sem um join como são dois campos de tabelas diferentes. Também podes é usar um campo de IVA da tabela BO em vez do bi.iva.

Olá Nelson Paiva,

Obrigado pela dica, funcionou :) e a mascara também.

pelo que vi na tabela BI é onde eu tenho a taxa do IVA para este cliente que é de 23% , na tabela BO não vejo essa campo do IVA.

José

Edited by JoseAC

Share this post


Link to post
Share on other sites
Filipe Alves

Boa tarde. Estou a criar uma regra de utilizador no PHC para haver um controlo automático de stocks. 

A logica é a seguinte: Ao efectuar uma encomenda a fornecedor, se existir stock do artigo, o PHC corrige automaticamente a quantidade a encomendar.

Questões. O código pode ser melhorado ? Como melhoro as mensagens de log para por exemplo dizer:

"A referência XXX tem N unidades em stock. Quantidade a encomendar de Y unidades"

Estará tudo corrigido de forma correcta nas linhas da BI ? Existe algum comando que ao mudar a quantidade corrige as restantes variáveis da tabela BI ? 

O código está abaixo.

Select bo
**Verifica se é Encomenda de Fornecedor

If (Astr(bo.NDOS) == '2')

    Select bi
    **Percorrer as linhas
    Scan
        **Referencia tem que estar preenchida
        If (!Empty(bi.ref))

            qttencomenda = bi.qtt

            **query - vai buscar quantidade anterior (para possibilitar alterações nas EF). Apenas faz alguma coisa se a quantidade variar
            If u_sqlexec([select qtt from bi where bistamp = ']+bi.bistamp+['],"tmp_verific_qtt")
                if (tmp_verific_qtt.qtt = qttencomenda)
                    LOOP
                endif
            endif

            **query para variaveis de stock
            TEXT to msomaqtt textmerge noshow
            select stock, qttfor, qttcli, usr1, stmin, stns, epcusto from st where ref = '<<bi.ref>>'
            ENDTEXT

            **executa query
            If u_sqlexec(msomaqtt,"tmp_somaqtt")
                **Não pode ser fornecedor XXX nem serviço
                If ( tmp_somaqtt.usr1 != 'XXX' And tmp_somaqtt.stns == .F.)

            **STOCKVAR = Quant. a Encomendar na EF + Quant. em stock + Encomendado a Fornecedores - Reservado para clientes - Stock Mínimo
                    stockvar = bi.qtt + tmp_somaqtt.stock + tmp_somaqtt.qttfor - tmp_somaqtt.qttcli - tmp_somaqtt.stmin

                    **Stockvar é maior que 0 é porque tem stock previsto positivo após efectuar a presente EF
                    If (stockvar > 0)
                        **se a quantidade encomendada for maior que o stockvar, é preciso encomendar a diferença
                        If (bi.qtt > stockvar)
                            qttsub = bi.qtt - stockvar
                            Replace bi.qtt With qttsub
                                                        ettdebsub = st.epcusto * qttsub
                                                        Replace bi.ettdeb With ettdebsub
                            msg("A referência " + Alltrim(bi.ref) + " tem unidades em stock. Quantidade corrigida")
                        Else
                            **Quantidade <= stockvar , não é necessário encomendar , logo coloca a quantidade/custo a zero
                            qttsub = 0
                                                        ettdebsub =0
                            Replace bi.qtt With qttsub
                                                        Replace bi.ettdeb With ettdebsub
                            msg("A referência " + Alltrim(bi.ref) + " tem unidades em stock. Quantidade anulada")
                        Endif

                    Endif
                Endif
            Endif
        Endif
    Endscan
Endif

 

Share this post


Link to post
Share on other sites
JoseAC

Olá a todos,

 

fiz a actualização para o phc cs advanced 24 tinha uma tecla configurada para quando estava nas PATs abrir um dossier e meter o artigo dentro do dossier e ficava associado a PAT.

tive esta tecla a funcionar nos ultimos anos

depois da versão 24 deixou de funcionar, abrir o IDU com o orçamento, não aparece o codigo da referencia e não associa a numero da pat ao idu.

alguém já teve este problema e alguma sugestão ?

Obrigado,


 

select pa
if alltrim(pa.ptipo)="JOSE" then
    mensagem("Vamos criar um ORÇAMENTO para este processo")
if empty(pa.nopat)
    msg("Tem de ter o nº de PAT preenchido para utilizar esta opção")
endif
lc_NOPAT=pa.nopat
lc_NO=pa.no
lc_NOME=pa.nome
lc_PASTAMP=pa.pastamp
lc_MASTAMP=pa.mastamp
**messageb("nº PAT")
**messageb(pa.nopat)
**messageb("nº PAT via Lc")
**messageb(lc_NOPAT)
do dbfusecl
u_sqlexec("Select clstamp from cl (nolock) where no = " + astr(pa.no), "myclstamp")
v_clstamp = myclstamp.clstamp
fecha("myclstamp")
u_requery("CL")
m_dossier = 11
doread("BO", "SBO")
sbo.newndos(m_dossier)
sbo.dointroduzir
select bo
** estava sem comentario a linha abaixo
** Do Boine2in 
do BOCLACT
SBO.REFRESH()
    replace bo.nmdos with 'Orçamento'
    replace bo.nome with pa.nome
    replace bo.no with pa.no
    replace bo.nopat with pa.nopat
    replace bo.obs with ' '
    replace bo.dataobra with date()
    replace bo.origem with 'PA'
    replace bo.orinopat with pa.nopat
    replace bo.pastamp with lc_PASTAMP
    replace bo.mastamp with lc_MASTAMP
SBO.REFRESH()
** Introducao linhas
select bi
** estava comentada esta linha
**Do Boine2in 
replace bi.ref with 'ORCAMENTO'
replace bi.design with 'Serviço. PAT:' + astr(lc_NOPAT)
replace bi.qtt with 1
Do BOACTREF with '',.t.,'OKPRECOS'
**Do Boine2in 
***********************
** TOTALIZAMOS A LINHA
***********************
Do U_BOTTDEB
** Fim introducao linhas
** a linha abaixo faz ok, ficando o dossier gravado
**SBO.Bok1.Okbuttomdef1.click()
return .t.
else
     messagebox("Esta tecla só pode ser usada nas PAT do JOSE")
    return .f.
endif

 

Share this post


Link to post
Share on other sites
pc.cesar

De facto deve existir alguma anomalia

Acresente as linhas

** Introducao linhas
    Do BOBIACT
    Select bi
    delete all
    ** estava comentada esta linha
    Do Boine2in
    Replace bi.ref With 'ORCAMENTO'
    Replace bi.qtt With 1
    Do BOACTREF With '',.T.,'OKPRECOS'
    Replace bi.Design With 'Serviço. PAT: ' + astr(lc_NOPAT)
    sbo.Refresh()

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.