Jump to content

PHC: Regra para alterar data com base ba condição de pagamento


oigres
 Share

Recommended Posts

Olá,

Na empresa onde trabalho atribuíram-me esta tarefa mas estou com muitas dificuldades.

Consigo fazer umas querys de SQL mas não sou programador, ao programar dentro do PHC (T-SQL, Xbase, ...) tudo me parece difícil!

Já agora, algumas dicas que deva seguir para um dia conseguir programar no PHC, gostaria mesmo de atingir esse objectivo!

A minha questão:

Em PHC Corporate pretendo criar uma regra para alterar a data de vencimento ao gravar o documento, o objectivo é forçar determinado dia do mês mais x dias.

Trata-se de uma condição de pagamento agora muito em uso entre as Empresas denominada "Resumo Mensal de Facturas",

Basicamente uma factura emitida a dia 5 de Janeiro cuja condição de pagamento seja "RMF 30 dias" (Resumo Mensal de Facturas a 30 dias) só ficará vencida 30 dias após o fim desse mês (02 de Março +-)

Existem diferentes condições de pagamento "RMF 45 dias", "RMF 8 dias", etc.. Todas vencem a X dias do fim do mês em que foi emitida a factura.

Pensei então em criar esta regra em que ao gravar a factura, verificava qual a condição de pagamento do cliente, e se por exemplo numa factura emitida ao dia 15 de Fevereiro a condição fosse "RMF 30 dias", a regra ia buscar o ultimo dia do mês em que estamos e somava os dias dessa condição de pagamento.

O problema está em colocar em prática esta ideia! Preciso mesmo de aprender a programar, não esqueçam das dicas para eu aprender! será que só com cursos?!

Deixo o meu ponto da situação, não dá erro, está a alterar a data mas não está a colocar as datas correctamente!

Set Date French

Set Century On

SELECT FT

SELECT SUBSTR(ALLTRIM(FT.TPDESC),1,2) AS DIAS FROM FT WITH(BUFFERING = .T.) INTO CURSOR CRSDIAS

VFECHA= FT.FDATA

VMES=Month(VFECHA)+1

VANIO=Year(VFECHA)

VDIAS=val(crsdias.dias)

If VMES=13

VMES=1

VANIO=Year(VFECHA)+1

EndIf

VDATA_VEN='01/'+Alltrim(Str(VMES,2))+'/'+Alltrim(Str(VANIO,4))

VDATA_VEN=CtoD(VDATA_VEN)+VDIAS

SELECT FT

REPLACE FT.PDATA WITH VDATA_VEN

select ft

Obrigados.

Link to comment
Share on other sites

Vê este exemplo:

local dias

dias=30

text to yourquery additive textmerge noshow

select CONVERT(date, GETDATE()+<<dias>>) as data

endtext

u_sqlexec(yourquery,"crsdata")

SELECT FT

REPLACE FT.PDATA WITH crsdata.data

Quando necessitas da data actual mais uns dias fazes sempre getdate()+30 no caso de mais 30 dias...

Agora é só adaptares o código ao que precisas

Link to comment
Share on other sites

Ola,

desde já agradeço a resposta,

testei o código mas não faz o que pretendo.

ele conta os X dias desde a data de hoje, e aquilo que se pretende é que conte os X dias a partir do último dia do mês em que estamos.

Se puderes ajudar mais agradeço 😄 .

Link to comment
Share on other sites

Para a tua questão tens aqui algo para adaptares

DECLARE @mes CHAR(2), @ano CHAR(4)

SET @mes = '02'

SET @ano = '2012'

SELECT DAY(DATEADD(d,-1,DATEADD(M,1,CONVERT(DATETIME,@ano + @mes + '01')))) as data

       

SET @mes = '02'

SET @ano = '2011'

SELECT DAY(DATEADD(d,-1,DATEADD(M,1,CONVERT(DATETIME,@ano + @mes + '01')))) as data

No entanto faz mais sentido que seja 15, 30, 45 dias apartir da data da factura (FDATA)

Link to comment
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
 Share

×
×
  • 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.