Search the Community
Showing results for tags 'phc'.
-
Boa tarde, Alguem já conseguiu criar uam pagina PHP para criar artigos no PHC ?
-
Boa tarde, Uso PHC CS Desckop com a Funcionalidade Multi Idioma ( Portugues e Ingles). Criei um campo de utilizador na tabela de artigos (ST) e gostaria conseguir escrever um descrução em Mandarim ( Chines). Acontece que o PHC nao consegue interpretar. Na Base de Dados tenho a escrita correta. Alguem ja passou por esta situação?
-
Bom dia, Preciso de criar uma regra que não deixe fazer alteração a Clientes que estejam inativos, eu tenho a regra abaixo IF cl.inactivo = 1 return .f. ENDIF RETURN .T. Sublinhei tambem a expressão é um programa Mas dá o seguinte erro: Regra com nº interno : 150 Código: 107 Linha: 1 Mensagem 1: Operator/operand type mismatch. Mensagem 2: Local: XRULE15020241007115537 Chamada: MAINPHC MAINMAIN SCL.GRAVAR.NOSSOBUTTON1.CLICK SCL.CHECKRULE PRGRUN XRULE15020241007115537 ON...
-
Olá a todos, Não fço programação mas sou user do PHC Advanced (v32 desktop), e gostaria de saber se é possivel programar a faturação para um valor mínimo, sempre que a venda não atinja determinado valor. A ideia seria no dossier de preços do cliente, colocar uma referência, p.ex MINIMO, com quantidade 1 e valor 100€, e sempre que gerar uma fatura para esse cliente, e os produtos vendidos não atinjam os 100€, o programa usaria a ref MINIMO para faturar o valor em falta - imaginemos, vendi 75€ de produtos ao cliente X e o programa geraria automáticamente uma linha na fatura com a refª MINIMO quantidade 1 e valor 25€. A permissa seria o valor mínimo a faturar poder ser diferente de cliente para cliente, ou até poder ser associado a um conjunto de artigos (talvez por família fosse mais fácil de programar). Agradeço desde já as vossas opiniões!
-
Tendo uma análise com uma variável global do tipo data e uma expressão simples: Dim x as string="select '#G1#'" Dim dt As DataTable = cdata.getdatatable(x) If dt.Rows.Count > 0 Then ' código quando existe dados Return dt End If Quando executada a análise o campo '#G1#' tem sempre o valor da data actual. mesmo quando a data selecionada é alterada. Esta é uma simplificação do problema com a estrutura a manter.
-
Boa noite, Tenho um painel de informação onde inseri uma grelha com uma expressão XBASE me vai buscar dados inseridos numa tabela de utilizador (ENTERPRISE). Consigo mudar os dados das varias linhas e colunas tendo um botão (tecla de utilizador) que procede á gravação dos valores alterados na tabela de utilizador. Funciona bem Precisava que ao ir alterando os valores a celula ficasse com uma cor tipo vermelho ou então em vez de estar a letra a preto estar a vermelho... ou seja como é uma grelha e na 1 linha altero a coluna 5 quando estou na linha 10 por exemplo verificar que na linha 1 a coluna 5 foi alterada... Não sei se me fiz entender... Depois de fechar o painel e voltar a entrar já fica tudo a preto... existe alguma função que me diga que os dados foram alterados?
-
Boa noite, O grupo empresarial para o qual trabalho é cliente PHC há vários anos mas tem usado apenas a componente de faturação/financeira e processamento salarial; atualmente numa das empresas do grupo estamos a alterar o ERP desenvolvido internamente por PHC (com desenvolvimento pelo fornecedor/parceiro PHC). No entanto o grupo tem departamento de desenvolvimento de software e nem todas as empresas vão usar PHC da mesma forma, além de existirem requisitos de desenvolvimento para os quais o parceiro teria dificuldade em responder (sem colocar um programador a tempo inteiro no nosso departamento). Posto isto, como cliente, há alguma forma de ter acesso a informação técnica de funcionamento do PHC, e das ferramentas de desenvolvimento que este possa ter, e ser autónomo na sua personalização? Tenho poucos conhecimentos no PHC, apenas fiz correções a código de teclas de operador que o parceiro anterior desenvolveu e integrações foi sempre com indicação de que tabelas tinha e preencher. Preciso fazer coisas relativamente simples no início, ex., quero criar um serviço para poder aceder aos dados para consulta sem que as aplicações tenham de aceder à BD; mas no futuro pretendo criar alguns registos (dossier interno, eventualmente algum form personalizado). Temos PHC CS 2024 (última versão). Tenho a esperança (pouca confesso) que a situação seja diferente do que os tópicos mais antigos do fórum indicam e que possa haver alguma coisa disponível ao cliente, afinal somos nós que pagamos as licenças e não os parceiros. Obrigado.
-
Meus caros, boa tarde Gostaria de pedir a vossa ajuda para o seguinte: Pretendia que o operador de loja, que usa o modulo PHC POS, enviasse email para o cliente, com a fatura anexa em PDF, ao clicar no botão email da impressão IDU, sem precisar de abrir o outlook, isto é, diretamente por PHC. Alguém que já tenha uma rotina para isto? Muito obrigado!
-
Boa tarde, A minha chefe achou por bem me pedir para conseguir ter o PHC a fazer um alerta de stock mínimo dos nossos artigos. Depois de pesquisar, percebi que os alertas apenas estão disponíveis em PHC CS Enterprise e nós utilizamos o PHC CS Advanced. Encontrei um tópico antigo aqui no PaP, em que resolvia esta questão utilizando uma análise avançada em que utiliza o seguinte código. local temp_stkm temp_stkm="select ref,stock,STMIN from st where stock<STMIN and stmin>0 order by ref" If u_sqlexec(temp_stkm,"stkm") If reccount("stkm")>0 Select stkm mostrameisto("stkm","Artigos abaixo do stock minimo") else end endif endif fecha("stkm") Ora, implementei isto numa análise avançada e o PHC indica que o SQL Server devolveu uma mensagem de erro de Sintaxe Incorreta junto ao temp_stkm. E como é que posso fazer correr esta análise automaticamente sempre que o PHC iniciar? Obrigado desde já pela ajuda que puderem dar.
-
Bom dia a todos Espero que se encontrem bem Preciso da vossa ajuda se for possível Tenho esta tecla de Atualização de Artigos para Corporate onde faz a seguinte validação: Se o código existe na ST, guarda a referência Se existir o código na BC, guarda a referência Quando chego ao if de validações, não passa porque vai sempre a zero Podem ajudar pfvr? Abaixo o código:
-
Bom dia, PHC CS Corporate Na tabela stock e serviços o campo de stock mostra o valor de stock em todos os armazéns. Gostaria de criar um campo ao lado deste onde mostre o stock do armazém 1. Como posso fazer? Obrigado.
-
Olá, Necessito de ajuda para o seguinte. Ao introduzir uma linha num dossier interno, referente a um artigo composto, preciso que ao colocar a referência do artigo composto, ele introduza nas linhas os artigos componentes com as st.desc1, st.desc2, etc, das respectivas referências. Como exemplo, imaginemos um Quarto, que é composto pelo componente Cama, componente Cómoda e componente Mesa de Cabeceira. Preciso que ao colocar a referência quarto, ele coloque as referências da cama, cómoda e mesas de cabeceira com as desc1, desc2, etc do ST. Tenho um evento ao introduzir uma linha no BO, com o código abaixo: If Inlist(bo.ndos,3) If Vartype(SBO) = "O" Select bi If Not Empty(bi.ref) And existcheck(bi.ref,"st.ref"," ",.T.) Store bi.ref To m.cref If instring(m.mc1,ASTR(Rtrim(m.cref))) If (ASTR(Substr(m.cref,4,1)) = "." And ASTR(Substr(m.cref,5,2)) = "CJ" And ASTR(Substr(m.cref,7,1)) = ".") Select bi Store bi.lrecno To m.clbirecno Store bi.desconto To m.cdesconto **Store bi.ettdeb To m.cpvpconjunto m.cprocstreftabelast = "select st.epcusto from st (nolock) where st.ref like '" + ASTR(Rtrim(m.cref)) + "' " If u_sqlexec(m.cprocstreftabelast,"c_tmpst") And Reccount("c_tmpst") > 0 Select c_tmpst Goto Top Scan Store c_tmpst.epcusto To m.necusto Endscan fecha("c_tmpst") Endif Store m.necusto to m.cpvpconjunto select bi Goto Top Scan m.cprocstreftabelasc = "select sum(sc.qtt*st.epcusto) as totalpeca from sc (nolock) " m.cprocstreftabelasc = m.cprocstreftabelasc + " inner join st (nolock) on st.ref=sc.ref " m.cprocstreftabelasc = m.cprocstreftabelasc + " where " m.cprocstreftabelasc = m.cprocstreftabelasc + " sc.refb like '" + ASTR(Rtrim(m.cref)) + "' " If u_sqlexec(m.cprocstreftabelasc,"c_tmpsc") And Reccount("c_tmpsc") > 0 Select c_tmpsc Goto Top Scan Store c_tmpsc.totalpeca To m.necustoun Endscan fecha("c_tmpsc") Endif select bi If ASTR(Rtrim(bi.lrecno))=ASTR(Rtrim(m.clbirecno)) And bi.stns=.F. m.cprocstreftabelast = "select st.epcusto, st.desc1, st.desc2, st.desc3, st.desc4, st.desc5, st.desc6 " m.cprocstreftabelast = m.cprocstreftabelast + "from st (nolock) where st.ref like '" + ASTR(Rtrim(bi.ref)) + "' " If u_sqlexec(m.cprocstreftabelast,"c_tmpst") And Reccount("c_tmpst") > 0 Select c_tmpst Goto Top Scan Store c_tmpst.epcusto To m.necustoST Store c_tmpst.desc1 To m.cdesc1 Store c_tmpst.desc2 To m.cdesc2 Store c_tmpst.desc3 To m.cdesc3 Store c_tmpst.desc4 To m.cdesc4 Store c_tmpst.desc5 To m.cdesc5 Store c_tmpst.desc6 To m.cdesc6 Endscan fecha("c_tmpst") Endif Select bi replace bi.edebito with round((m.necustoST-(m.necustoST*(m.necusto/m.necustoun))-m.necustoST),2)*-1 replace bi.desconto with m.cdesconto replace bi.design with astr(m.cdesc1) ** If not empty(m.cdesc2) ** select bi ** Do Boine2in ** replace bi.design with astr(m.cdesc2) ** Endif ** If not empty(m.cdesc3) ** select bi ** Do Boine2in ** replace bi.design with astr(m.cdesc3) ** Endif ** If not empty(m.cdesc4) ** select bi ** Do Boine2in ** replace bi.design with astr(m.cdesc4) ** Endif ** If not empty(m.cdesc5) ** select bi ** Do Boine2in ** replace bi.design with astr(m.cdesc5) ** Endif ** If not empty(m.cdesc6) ** select bi ** Do Boine2in ** replace bi.design with astr(m.cdesc6) ** Endif **MSG(ASTR(BI.LRECNO)) **MSG(ASTR(BI.LORDEM)) Endif If ASTR(Rtrim(bi.lrecno))=ASTR(Rtrim(m.clbirecno)) And bi.stns=.T. Replace bi.ref With "" Replace bi.qtt With 0 Replace bi.desconto With 0 Replace bi.epu With 0 Replace bi.edebito With 0 Replace bi.eprorc With 0 Replace bi.EPCUSTO With 0 Replace bi.ettdeb With 0 Replace bi.stns With .F. Replace bi.ecustoind With 0 Replace bi.edebitoori With 0 Replace bi.Design With "QUARTO COMPOSTO POR:"+" (Preço: "+astr(m.necusto) + "€ Suj. "+astr(m.cdesconto)+"%)" **Replace bi.lrecno With "" ** msg("Apaguei a Ref do Composto. Os valores foram distribuidos pelas linhas") **Do Boine2in Endif Endscan Endif Endif Endif Endif Endif Agradeço a vossa ajuda para o pretendido. Obrigado
-
Estou a desenvolver uma listagem detalhada do movimento da conta corrente, e estou com problemas ao calcular o valor do saldo do intervalo de datas. Exemplo: Data | Data vencimento | Doc | Doc Nº | Débito | Crédito | Saldo 2021-10-01 | 2021-11-01 | Fatura | 2 | -10€ | 0 | -100€ 2021-09-01 | 2021-10-01 | Recibo | 1 | 0 | 20 | -90€ 2021-09-10 | 2021-10-01 | Fatura | 1 | -110€ | 0 | -110€ A consulta para obter o saldo em aberto da conta corrente esta a funcionar, o problema esta na consulta para preencher a coluna do saldo. Alguém já implementou ou pode-me ajudar nas consulta ?
-
Saudações, Estou a consumir um API a partir do PHC Advanced usando XMLHTTP. Gostaria de exibir um ícone animado enquanto aguarda a resposta do request. Tenho notado que o PHC exibe um ícone de espera quando processa grandes volumes de dados. Como posso invocar esse ícone? Caso seja restrito, como posso adicionar um gif representando "Pocessando...". Não gostaria de usar Wait Window para este fim. Gratos pela atenção.
-
Boa tarde, Não sei como fazer uma regra/valor defeito para a tabela de artigos Ao gravar o artigo preencher um campo de utilizador com outras caracteristicas; Por exemplo: A desiganção do Artigo é - Viola de madeira por 100mm / 200mm /300mm Ao gravar substituir o campo de utilizador por - Viola de madeira por 100cm / 200cm /300cm Pretendia substituir ao gravar os mm por cm; Podem-me ajudar? Cumprimentos
-
Bom dia, Tenho esta browlist nao sei como colocar cores apenas nas linhas com quantidade maior que zero select bi lvcass = getnome("Procura por referencia","") lvcquery = [select bi.ref, bi.design,bi.qtt,bi.edebito, bi.bistamp from bi (nolock) inner join bo on bi.bostamp=bo.bostamp Where bi.ndos=32 and bi.ref like '%]+alltrim(lvcass)+[%' and bi.obrano=?bi.obrano order by lordem] u_sqlexec(lvcquery ,[getbi]) u_sqlexec(lvcquery , [getbi]) declare list_tit(4), list_tam(4), list_cam(4), list_pic(4) list_tit(1)='Referência' list_tit(2)='Designação' list_tit(3)='Quantidade' list_tit(4)='Venda' list_tam(1)=100 list_tam(2)=200 list_tam(3)=200 list_tam(4)=200 list_cam(1)='getbi.ref' list_cam(2)='getbi.design' list_cam(3)='getbi.qtt' list_cam(4)='getbi.edebito' list_pic(1)='' list_pic(2)='' list_pic(3)='###,###.#' list_pic(4)='###,###.##' m.escolheu = .f. browlist ('Artigos do Dossier', 'getbi') if m.escolheu = .t. select bi locate for bi.bistamp = getbi.bistamp return endif Sera que me conseguem ajudar? Cumprimentos
-
Boa tarde a todos! Estou a atentar obter uma listagem no PHC que me mostre o numero , nome data movimento, data vencimento, numero do documento, e valor em aberto(pendente) de todos os clientes que apenas tenham um documento de movimento V/Adiantamento, todos os outros que nao tem , nao queria que saia na listagem; Estou com dificuldade no seguinte codigo: select cc.no, cc.nome,DtOriginal=convert(varchar, datalc, 104), DtVencimento=convert(varchar, dataven, 104), Descricão=cmdesc, Nr=nrdoc, (edeb-edebf-ecred+ecredf) as Pendente from cc (nolock) inner join cl (nolock) on cl.no=cc.no and cc.estab=cl.estab and cl.inactivo=0 where abs(edeb-edebf-ecred+ecredf)>.01 and origem='FT' or origem='RD' and (edeb-edebf-ecred+ecredf)<>0 order by 1, 2 Podem-me ajudar? Obrigado desde ja! Cumprimentos no, nome,Data , Datavencimento, Nr doc, Pendente 1 Joao 01.01.2023 01.01.2023 286 n/fACTURA 1 Joao10.02.2023 10.02.2023 901 v/aDIANTAMENTO
- 4 replies
-
- bases de dados
- sql server
-
(and 1 more)
Tagged with:
-
Saudações, Estou enfrentando dificuldades ao tentar buscar a referência na linha de compra a fornecedores, após copiar as linhas de um dossier interno (Encomenda). É crucial que eu encontre essa referência para discernir se se trata de uma encomenda ou de uma requisição interna. Isso, por sua vez, me permitirá inserir automaticamente o valor padrão no campo do armazém. O que tentei: Criei um valor por defeito | Tabela: FN | Campo: FN.ARMAZEM | Assim que começa a introduzir | O comando xbase é um programa Comando xbase: select fo select fn if not empty (fn.fnstamp) msg(fn.ref) endif return fn.armazem Ao inserir uma nova compra ou copiar as linhas de DI, a mensagem aparece vazia, corre antes da linha ser carregada. Como posso solucionar essa questão? Agradeço antecipadamente pela atenção.
-
Olá, Gostaria de uma ajuda, preciso adicionar uma browlist para retornar uma tabela com todas as matrículas do cliente e ao selecionar a matrícula ela preencher o primeiro xvars. Segue código: Text to m.mySQL TextMerge NoShow SELECT DISTINCT 'Divida' = (select sum(case when datediff(dd,cc.dataven,getdate())>30 then cc.edeb-cc.edebf-(cc.ecred-cc.ecredf) else 0 end) from cc where cc.no=<<cl.no>> and cc.estab=<<cl.estab>>)-isnull((select sum(case when (RE.PROCESS=0) then RE.ETOTAL else 0 end) from RE WHERE re.no=<<cl.no>> and re.estab=<<cl.estab>>),0) FROM cc (nolock) WHERE cc.no=<<cl.no>> and cc.estab=<<cl.estab>> EndText u_sqlexec(m.mySQL,"cDIV") m.valordivida = cDIV.Divida If cl.U_ASSISCAN=.t. OR cl.inactivo=.t. msg("Abertura de folhas de obra canceladas pela Administração!") else If m.valordivida>0 AND cl.U_ASSISCAN=.f. aadderros("Este Cliente tem um saldo em dívida já vencido de: "+astr(m.valordivida)+chr(13)+"") MOSTRAERROS() *Messagebox("O Cliente tem um saldo de "+astr(cDIV.Divida)+" já vencido.") EndIf local msel, mbox msel= "SELECT u_matricul as 'Viatura' FROM BO WHERE ndos = 26 AND u_ativo = 0 AND no=?cl.no" u_sqlexec(msel,"listbo") Create Cursor xVars ( no N(5), tipo c(1), Nome c(40), Pict c(100), lOrdem N(10), nValor N(18,5), cValor c(250), lValor l, dValor d, tBval M ) Select xVars Append Blank Replace xVars.no With 1 Replace xVars.tipo With "T" Replace xVars.Nome With "Viatura" Replace xVars.Pict With "" Replace xVars.lOrdem With 1 m.mySQL_Viat = "(SELECT u_matricul as 'Viatura' FROM BO WHERE ndos = 26 AND u_ativo = 0 AND no=?cl.no)" m.mySQL_Viat = m.mySQL_Viat + "UNION ALL" m.mySQL_Viat = m.mySQL_Viat + "(SELECT IIF((SELECT COUNT(*) FROM BO WHERE ndos = 26 AND u_ativo = 0 AND no=?cl.no)>0, '', 'SEM VIATURAS') AS 'Viatura')" If u_sqlexec(m.mySQL_Viat,"vT") Select vT Scan Select xVars Replace xVars.tbval with alltrim(xVars.tbval)+alltrim(vT.Viatura)+"," Endscan Endif Select xVars Append Blank Replace xVars.no With 2 Replace xVars.tipo With "T" Replace xVars.Nome With "Tipo de Pedido" Replace xVars.Pict With "" Replace xVars.lOrdem With 2 m.mySQL_TipoServ = "SELECT ltrim(rtrim(u_texto)) AS 'VALOR' FROM BI WHERE ndos=25 AND obrano=6 ORDER BY binum1 ASC" If u_sqlexec(m.mySQL_TipoServ,"vTS") Select vTS Scan Select xVars Replace xVars.tbval with alltrim(xVars.tbval)+alltrim(vTS.VALOR)+"," Endscan Endif Select xVars Append Blank Replace xVars.no With 3 Replace xVars.tipo With "T" Replace xVars.Nome With "Técnico" Replace xVars.Pict With "" Replace xVars.lOrdem With 3 If u_sqlexec([SELECT nome2 FROM AG (nolock) WHERE inactivo = 0 AND u_tecnico = 1],"cT") Select cT Scan Select xVars Replace xVars.tbval with alltrim(xVars.tbval)+alltrim(cT.nome2)+"," Endscan Endif m.Escolheu = .F. m.mCaption = "Dados para abertura de folha de obra" docomando("do form usqlvar with 'xvars',m.mCaption,.t.") If Not m.Escolheu *mensagem("Atribuição interrompida!","DIRECTA") Return .F. Else Select xVars Locate Aut = xVars.cValor Select xVars Skip Tip = xVars.cValor Select xVars Skip Tec = xVars.cValor Select xVars Endif Text to m.mySQL TextMerge NoShow SELECT u_marca as 'Marca', u_modelo as 'Modelo', u_nuchassi as 'Chassi' FROM BO WHERE ndos = 26 AND u_matricul =?Aut EndText u_sqlexec(m.mySQL,"cViatura") If Wexist("SFREF") sfref.Release Endif doread("FREF","SFREF") sfref.dointroduzir select fref replace fref.u_no with cl.no replace fref.u_nome with cl.nome replace fref.u_morada with cl.morada replace fref.u_local with cl.local replace fref.u_codpost with cl.codpost replace fref.u_ncont with cl.ncont replace fref.u_telefone with cl.telefone replace fref.u_email with cl.email replace fref.u_estado with 'STAND BY' replace fref.u_tecnico with astr(Tec) replace fref.u_tipo with astr(Tip) replace fref.u_matricul with astr(Aut) replace fref.u_marca with cViatura.Marca replace fref.u_modelo with cViatura.Modelo replace fref.u_chassi with cViatura.Chassi replace fref.u_dataini with Date() replace fref.u_datafim with Date() sfref.refresh EndIf
-
Olá a todos, necessito de ajuda para o seguinte: Estou a exportar para excel um ficheiro do PHC de Stock e serviços, opções com a tabela de alterar registos de seguida. Apos escolher os campos, o capo INACTIVO, passa PDA apresenta no excel .T. ou .F. , no caso .T. é que tem espiga no PHC no .F. é que não tem espiga no PHC. Pretendo alterar no excel exemplo do .T. para .F. ou vice versa, gravo o ficheiro excel com a alteração, faço a importação no PHC para proceder a alteração, mas não aceita, mantem o inicial que está no PHC. Como é que tenho de colocar a alteração no ficheiro de excel?
-
Boa tarde, Gostaria de saber se é possível adicionar uma linha a um dossier, que já existe, sem ter que clicar o botão gravar por exemplo: SELECT BI go top APPEND BLANK Replace BI.ref with 'ref' Do boactref With 'BORAPIDO',.T.,'NAO','bi' Replace BI.cor with 'BLUE' Replace BI.tam with '45' Replace bi.qtt With 1 do u_bottdeb with 'bi',.F. com este código csg inserir a linha, mas é necessário gravar o dossiers com a intervenção do utilizador Obrigado
-
Bom dia, Sou utilizador do PHC CS Advanced e pretendo importar registos de uma base de dados em Access para as "linhas" de um dossier interno. Já consegui ligar-me à tabela em Access e importar TODOS os registos existentes para o dossier interno. No entanto o que pretendo é importar apenas os registos que obedeçam a uma certa condição (ft_id = <valor>), sendo que este <valor> seria obtido do campo BO.OBRANO presente no formulário de dossiers internos Isto é possível de ser feito através do menu "Configurações de Ficheiros Externos"? A documentação da PHC escasseia bastante neste tema. Desde já obrigado,
-
Saudações, Crie um triger (After Insert) para inserção de um recibo de adiantamento, assim que é gerado um dossier interno. O recibo de adiantamento é criado corretamente, mas o mesmo não fica contabilizado, a não ser que va regravar o recibo. Existe uma forma de contabilizar o recibo de adiantamento sem ter que regravar o registro? Mcpts,
-
Boa tarde. Alguém sabe se existe alguma forma de conseguir criar vários dossiers internos no mesmo dossier de uma vez através de um botão? Imaginando que nos dossiers internos eu tenho os dossiers: Dossier 1 Dossier 2 Dossier 3 Dossier 4 Criar um novo registo em cada um destes dossiers eu tenho uma tecla para isso mas queria criar por exemplo 5 registos novos no Dossier 1. É possível?