Fórum Ajuda com Onexit #430632
07/12/2012
0
Olá Pessoal.
Mais uma vez Preciso da ajuda de vocês
no onexit do meus sistemas eu preciso que ele verifica Quatro Procedimentos
VerificaPagamentoProgramado;
VerificaFeriado;
IsFimDeSemana(DM.cdsContasPagarDT_VENCIMENTO.AsString);
LimiteDiario;
Exemplo:
Quando ele encontra feriado ele muda a data para + 1, só que ele não volta o loop para o primeiro que é VerificaPagamentoProgramado ele já avança para IsFimDeSemana, o mesmo acontece se ele encontra sabado ou domindo ele não volta para o VerificaPagamentoProgramado avança para LimiteDiario.
O que eu faço....
Grato a Todos.
Mais uma vez Preciso da ajuda de vocês
no onexit do meus sistemas eu preciso que ele verifica Quatro Procedimentos
VerificaPagamentoProgramado;
VerificaFeriado;
IsFimDeSemana(DM.cdsContasPagarDT_VENCIMENTO.AsString);
LimiteDiario;
Exemplo:
Quando ele encontra feriado ele muda a data para + 1, só que ele não volta o loop para o primeiro que é VerificaPagamentoProgramado ele já avança para IsFimDeSemana, o mesmo acontece se ele encontra sabado ou domindo ele não volta para o VerificaPagamentoProgramado avança para LimiteDiario.
O que eu faço....
Grato a Todos.
Márcio Lima
Curtir tópico
+ 0
Responder
Posts
07/12/2012
Claudia Nogueira
Onde está incrementando a data e qual o retorno de cada função?
Responder
Gostei + 0
07/12/2012
Márcio Lima
Olá Amiga, mais uma vez me ajudando.
Segue abaixo o Codigo Fonte de cada Procedimento. Espero que entenda.
VerificaPagamentoProgramado;
VerificaFeriado;
IsFimDeSemana(DM.cdsContasPagarDT_VENCIMENTO.AsString);
LimiteDiario;
--------------------------------
procedure TfrmPedidoCompra.VerificaPagamentoProgramado;
const
DiasSemana: array[1..7] of string = ('Domingo','Segunda-feira','Terça-Feira', 'Quarta-Feira', 'Quinta-Feira', 'Sexta-Feira', 'Sábado');
Var
Dia, Mes,Pagamento : String;
iNumDia: integer;
begin
VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
L_DIA_SEMANA.Caption := VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
Dia := formatdatetime('dd',strtodatetime(DBEdit49.text));
Mes := formatdatetime('mm',strtodatetime(DBEdit49.text));
iNumDia := DayOfWeek(StrToDate(DM.cdsContasPagarDT_VENCIMENTO.AsString));
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText := ' SELECT PG.ID_LOJA,L.FANTASIA, PG.DIA_MES,PG.DESCRICAO_PAGAMENTO FROM TB_PAGAMENTO_PROGRAMADO PG'+
' LEFT OUTER JOIN TB_LOJAS L ON (L.ID_LOJA = PG.ID_LOJA) '+
' WHERE PG.DIA_MES = '+Dia+
' AND PG.ID_LOJA = '+DM.cdsPedidoID_LOJA.AsString;
DM.cdsDinamica.Open;
Pagamento := DM.cdsDinamica.Fields[3].AsString;
if DM.cdsDinamica.IsEmpty then //verfica paramento programado
begin
end
else
begin
if DM.cdsPedidoID_LOJA.AsString <> '' then //Procura Feriado Por Loja
begin
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText := ' Select F.DESC_FERIADO from TB_FERIADO F where extract(DAY from F.DT_FERIADO) = '+Dia +
' AND extract(MONTH from F.DT_FERIADO) = '+Mes +
' AND F.ID_LOJA = '+DM.cdsPedidoID_LOJA.AsString;
DM.cdsDinamica.Open;
if DM.cdsDinamica.IsEmpty then //verifica feriado geral
begin
//Procura Por Feriado Nacional
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText := ' Select F.DESC_FERIADO from TB_FERIADO F where extract(DAY from F.DT_FERIADO) = '+Dia +
' AND extract(MONTH from F.DT_FERIADO) = '+Mes + ' and F.ID_LOJA IS NULL ';
DM.cdsDinamica.Open;
if DM.cdsDinamica.IsEmpty then
begin
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText := ' SELECT PG.ID_LOJA,L.FANTASIA, PG.DIA_MES,PG.DESCRICAO_PAGAMENTO FROM TB_PAGAMENTO_PROGRAMADO PG'+
' LEFT OUTER JOIN TB_LOJAS L ON (L.ID_LOJA = PG.ID_LOJA) '+
' WHERE PG.DIA_MES = '+Dia+
' AND PG.ID_LOJA = '+DM.cdsPedidoID_LOJA.AsString;
DM.cdsDinamica.Open;
Pagamento := DM.cdsDinamica.Fields[3].AsString;
if DM.cdsDinamica.IsEmpty then
begin
end
else
begin
if iNumDia in [7] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 3;
DBEdit49.OnExit(Self);
end;
if iNumDia in [8] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [6] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 4;
DBEdit49.OnExit(Self);
end;
if iNumDia in [1] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [2] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [3] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [4] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [5] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
end;
end
else
begin
if iNumDia in [7] then
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 3;
DBEdit49.OnExit(Self);
end;
if iNumDia in [8] then
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [6] then
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 4;
DBEdit49.OnExit(Self);
end;
if iNumDia in [1] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [2] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [3] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [4] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [5] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
end;
end
else
begin
if iNumDia in [7] then
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 3;
DBEdit49.OnExit(Self);
end;
if iNumDia in [8] then
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [6] then
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 4;
DBEdit49.OnExit(Self);
end
else
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end
end;
end
else
begin
end;
end;
---------------------------
procedure TfrmPedidoCompra.VerificaFeriado;
Var
Dia, Mes : String;
begin
VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
L_DIA_SEMANA.Caption := VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
Dia := formatdatetime('dd',strtodatetime(DBEdit49.text));
Mes := formatdatetime('mm',strtodatetime(DBEdit49.text));
if DM.cdsPedidoID_LOJA.AsString <> '' then //Procura Feriado Por Loja
begin
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText := ' Select F.DESC_FERIADO from TB_FERIADO F where extract(DAY from F.DT_FERIADO) = '+Dia +
' AND extract(MONTH from F.DT_FERIADO) = '+Mes +
' AND F.ID_LOJA = '+DM.cdsPedidoID_LOJA.AsString;
DM.cdsDinamica.Open;
if DM.cdsDinamica.IsEmpty then
begin
//Procura Por Feriado Nacional
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText := ' Select F.DESC_FERIADO from TB_FERIADO F where extract(DAY from F.DT_FERIADO) = '+Dia +
' AND extract(MONTH from F.DT_FERIADO) = '+Mes + ' and F.ID_LOJA IS NULL ';
DM.cdsDinamica.Open;
if DM.cdsDinamica.IsEmpty then
begin
end
else
begin
ShowMessage('Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString);
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 1;
DBEdit49.OnExit(Self);
end;
end
else
begin
ShowMessage('Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString);
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 1;
DBEdit49.OnExit(Self);
end;
end
else
begin
end;
end;
---------------------------------------------------
function IsFimDeSemana(sData: string) : boolean;
const
DiasSemana: array[1..7] of string = ('Domingo','Segunda-feira','Terça-Feira', 'Quarta-Feira', 'Quinta-Feira', 'Sexta-Feira', 'Sábado');
var
iNumDia: integer;
begin
VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
iNumDia := DayOfWeek(StrToDate(DM.cdsContasPagarDT_VENCIMENTO.AsString));
if iNumDia in [1,7] then
begin
ShowMessage('Esta data cai num dia de: '+DiasSemana[iNumDia]);
result := true;
end else
result := false;
if iNumDia in [1] then
begin
ShowMessage('Não Será Permitido lançamentos no Domingo'+#13+
'O Sistema Irá Localizar o Próximo Dia Útil');
DM.cdsContasPagarDT_VENCIMENTO.Value := DM.cdsContasPagarDT_VENCIMENTO.Value + 1;
ShowMessage('Data Localizada '+DM.cdsContasPagarDT_VENCIMENTO.AsString);
Exit;
end;
if iNumDia in [7] then
begin
ShowMessage('Não Será Permitido lançamentos no Sábado'+#13+
'O Sistema Irá Localizar o Próximo Dia Útil');
DM.cdsContasPagarDT_VENCIMENTO.Value := DM.cdsContasPagarDT_VENCIMENTO.Value + 2;
ShowMessage('Data Localizada '+DM.cdsContasPagarDT_VENCIMENTO.AsString);
Exit;
end;
end;
-----------------------------
procedure TfrmPedidoCompra.LimiteDiario;
var
VlTotal,vlLimite : Extended;
begin
// valido
VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
L_DIA_SEMANA.Caption := VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
if DM.cdsPedidoID_LOJA.IsNull then
begin
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText :=' SELECT SUM(CP.VL_TITULO) '+
' FROM TB_CONTAS_PAGAR CP WHERE CP.STATUS <>''B'''+
' AND CP.DT_VENCIMENTO = '+QuotedStr(FormatDateTime('MM/DD/YYYY',DM.cdsContasPagarDT_VENCIMENTO.Value))+
' AND CP.ID_GRUPO_LOJA ='+DM.cdsPedidoID_GRUPO_LOJA.AsString;
DM.cdsDinamica.Open;
end
else
begin
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText :=' SELECT SUM(CP.VL_TITULO) '+
' FROM TB_CONTAS_PAGAR CP WHERE CP.STATUS <>''B'''+
' AND CP.DT_VENCIMENTO = '+QuotedStr(FormatDateTime('MM/DD/YYYY',DM.cdsContasPagarDT_VENCIMENTO.Value))+
' AND CP.ID_LOJA ='+DM.cdsPedidoID_LOJA.AsString;
DM.cdsDinamica.Open;
end;
if DM.cdsDinamica.Fields[0].IsNull then
VlTotal := 0
else
VlTotal := DM.cdsDinamica.Fields[0].AsFloat;
if DM.cdsPedidoVL_DIARIO_PAGMETO.IsNull then
vlLimite := DM.cdsPedidoVL_DIARIO_PAGMETO_1.AsFloat
else
vlLimite := DM.cdsPedidoVL_DIARIO_PAGMETO.AsFloat;
if VlTotal + DM.cdsContasPagarVL_TITULO.AsFloat >= vlLimite then
begin
ShowMessage('LIMITE DIARIO EXCEDIDO');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 1;
DBEdit49.SetFocus;
end;
end;
---------------------------------------
Segue abaixo o Codigo Fonte de cada Procedimento. Espero que entenda.
VerificaPagamentoProgramado;
VerificaFeriado;
IsFimDeSemana(DM.cdsContasPagarDT_VENCIMENTO.AsString);
LimiteDiario;
--------------------------------
procedure TfrmPedidoCompra.VerificaPagamentoProgramado;
const
DiasSemana: array[1..7] of string = ('Domingo','Segunda-feira','Terça-Feira', 'Quarta-Feira', 'Quinta-Feira', 'Sexta-Feira', 'Sábado');
Var
Dia, Mes,Pagamento : String;
iNumDia: integer;
begin
VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
L_DIA_SEMANA.Caption := VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
Dia := formatdatetime('dd',strtodatetime(DBEdit49.text));
Mes := formatdatetime('mm',strtodatetime(DBEdit49.text));
iNumDia := DayOfWeek(StrToDate(DM.cdsContasPagarDT_VENCIMENTO.AsString));
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText := ' SELECT PG.ID_LOJA,L.FANTASIA, PG.DIA_MES,PG.DESCRICAO_PAGAMENTO FROM TB_PAGAMENTO_PROGRAMADO PG'+
' LEFT OUTER JOIN TB_LOJAS L ON (L.ID_LOJA = PG.ID_LOJA) '+
' WHERE PG.DIA_MES = '+Dia+
' AND PG.ID_LOJA = '+DM.cdsPedidoID_LOJA.AsString;
DM.cdsDinamica.Open;
Pagamento := DM.cdsDinamica.Fields[3].AsString;
if DM.cdsDinamica.IsEmpty then //verfica paramento programado
begin
end
else
begin
if DM.cdsPedidoID_LOJA.AsString <> '' then //Procura Feriado Por Loja
begin
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText := ' Select F.DESC_FERIADO from TB_FERIADO F where extract(DAY from F.DT_FERIADO) = '+Dia +
' AND extract(MONTH from F.DT_FERIADO) = '+Mes +
' AND F.ID_LOJA = '+DM.cdsPedidoID_LOJA.AsString;
DM.cdsDinamica.Open;
if DM.cdsDinamica.IsEmpty then //verifica feriado geral
begin
//Procura Por Feriado Nacional
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText := ' Select F.DESC_FERIADO from TB_FERIADO F where extract(DAY from F.DT_FERIADO) = '+Dia +
' AND extract(MONTH from F.DT_FERIADO) = '+Mes + ' and F.ID_LOJA IS NULL ';
DM.cdsDinamica.Open;
if DM.cdsDinamica.IsEmpty then
begin
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText := ' SELECT PG.ID_LOJA,L.FANTASIA, PG.DIA_MES,PG.DESCRICAO_PAGAMENTO FROM TB_PAGAMENTO_PROGRAMADO PG'+
' LEFT OUTER JOIN TB_LOJAS L ON (L.ID_LOJA = PG.ID_LOJA) '+
' WHERE PG.DIA_MES = '+Dia+
' AND PG.ID_LOJA = '+DM.cdsPedidoID_LOJA.AsString;
DM.cdsDinamica.Open;
Pagamento := DM.cdsDinamica.Fields[3].AsString;
if DM.cdsDinamica.IsEmpty then
begin
end
else
begin
if iNumDia in [7] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 3;
DBEdit49.OnExit(Self);
end;
if iNumDia in [8] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [6] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 4;
DBEdit49.OnExit(Self);
end;
if iNumDia in [1] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [2] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [3] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [4] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [5] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
end;
end
else
begin
if iNumDia in [7] then
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 3;
DBEdit49.OnExit(Self);
end;
if iNumDia in [8] then
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [6] then
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 4;
DBEdit49.OnExit(Self);
end;
if iNumDia in [1] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [2] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [3] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [4] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [5] then //
begin
ShowMessage('Data não Permitida.Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
end;
end
else
begin
if iNumDia in [7] then
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 3;
DBEdit49.OnExit(Self);
end;
if iNumDia in [8] then
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end;
if iNumDia in [6] then
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 4;
DBEdit49.OnExit(Self);
end
else
begin
ShowMessage('Data não Permitida. Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString+#13
+' e Existe(m) Pagamento(s) Programado(s)'+#13+
' '+Pagamento+#13+
' O Sistema Irá Localizar uma Data Próxima.');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 2;
DBEdit49.OnExit(Self);
end
end;
end
else
begin
end;
end;
---------------------------
procedure TfrmPedidoCompra.VerificaFeriado;
Var
Dia, Mes : String;
begin
VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
L_DIA_SEMANA.Caption := VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
Dia := formatdatetime('dd',strtodatetime(DBEdit49.text));
Mes := formatdatetime('mm',strtodatetime(DBEdit49.text));
if DM.cdsPedidoID_LOJA.AsString <> '' then //Procura Feriado Por Loja
begin
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText := ' Select F.DESC_FERIADO from TB_FERIADO F where extract(DAY from F.DT_FERIADO) = '+Dia +
' AND extract(MONTH from F.DT_FERIADO) = '+Mes +
' AND F.ID_LOJA = '+DM.cdsPedidoID_LOJA.AsString;
DM.cdsDinamica.Open;
if DM.cdsDinamica.IsEmpty then
begin
//Procura Por Feriado Nacional
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText := ' Select F.DESC_FERIADO from TB_FERIADO F where extract(DAY from F.DT_FERIADO) = '+Dia +
' AND extract(MONTH from F.DT_FERIADO) = '+Mes + ' and F.ID_LOJA IS NULL ';
DM.cdsDinamica.Open;
if DM.cdsDinamica.IsEmpty then
begin
end
else
begin
ShowMessage('Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString);
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 1;
DBEdit49.OnExit(Self);
end;
end
else
begin
ShowMessage('Esta Data é Feriado '+DM.cdsDinamica.Fields[0].AsString);
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 1;
DBEdit49.OnExit(Self);
end;
end
else
begin
end;
end;
---------------------------------------------------
function IsFimDeSemana(sData: string) : boolean;
const
DiasSemana: array[1..7] of string = ('Domingo','Segunda-feira','Terça-Feira', 'Quarta-Feira', 'Quinta-Feira', 'Sexta-Feira', 'Sábado');
var
iNumDia: integer;
begin
VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
iNumDia := DayOfWeek(StrToDate(DM.cdsContasPagarDT_VENCIMENTO.AsString));
if iNumDia in [1,7] then
begin
ShowMessage('Esta data cai num dia de: '+DiasSemana[iNumDia]);
result := true;
end else
result := false;
if iNumDia in [1] then
begin
ShowMessage('Não Será Permitido lançamentos no Domingo'+#13+
'O Sistema Irá Localizar o Próximo Dia Útil');
DM.cdsContasPagarDT_VENCIMENTO.Value := DM.cdsContasPagarDT_VENCIMENTO.Value + 1;
ShowMessage('Data Localizada '+DM.cdsContasPagarDT_VENCIMENTO.AsString);
Exit;
end;
if iNumDia in [7] then
begin
ShowMessage('Não Será Permitido lançamentos no Sábado'+#13+
'O Sistema Irá Localizar o Próximo Dia Útil');
DM.cdsContasPagarDT_VENCIMENTO.Value := DM.cdsContasPagarDT_VENCIMENTO.Value + 2;
ShowMessage('Data Localizada '+DM.cdsContasPagarDT_VENCIMENTO.AsString);
Exit;
end;
end;
-----------------------------
procedure TfrmPedidoCompra.LimiteDiario;
var
VlTotal,vlLimite : Extended;
begin
// valido
VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
L_DIA_SEMANA.Caption := VerFimSemana(dm.cdsContasPagarDT_VENCIMENTO.AsDateTime);
if DM.cdsPedidoID_LOJA.IsNull then
begin
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText :=' SELECT SUM(CP.VL_TITULO) '+
' FROM TB_CONTAS_PAGAR CP WHERE CP.STATUS <>''B'''+
' AND CP.DT_VENCIMENTO = '+QuotedStr(FormatDateTime('MM/DD/YYYY',DM.cdsContasPagarDT_VENCIMENTO.Value))+
' AND CP.ID_GRUPO_LOJA ='+DM.cdsPedidoID_GRUPO_LOJA.AsString;
DM.cdsDinamica.Open;
end
else
begin
DM.cdsDinamica.Close;
DM.cdsDinamica.IndexFieldNames:='';
DM.cdsDinamica.CommandText :=' SELECT SUM(CP.VL_TITULO) '+
' FROM TB_CONTAS_PAGAR CP WHERE CP.STATUS <>''B'''+
' AND CP.DT_VENCIMENTO = '+QuotedStr(FormatDateTime('MM/DD/YYYY',DM.cdsContasPagarDT_VENCIMENTO.Value))+
' AND CP.ID_LOJA ='+DM.cdsPedidoID_LOJA.AsString;
DM.cdsDinamica.Open;
end;
if DM.cdsDinamica.Fields[0].IsNull then
VlTotal := 0
else
VlTotal := DM.cdsDinamica.Fields[0].AsFloat;
if DM.cdsPedidoVL_DIARIO_PAGMETO.IsNull then
vlLimite := DM.cdsPedidoVL_DIARIO_PAGMETO_1.AsFloat
else
vlLimite := DM.cdsPedidoVL_DIARIO_PAGMETO.AsFloat;
if VlTotal + DM.cdsContasPagarVL_TITULO.AsFloat >= vlLimite then
begin
ShowMessage('LIMITE DIARIO EXCEDIDO');
DM.cdsContasPagarDT_VENCIMENTO.AsDateTime := DM.cdsContasPagarDT_VENCIMENTO.AsDateTime + 1;
DBEdit49.SetFocus;
end;
end;
---------------------------------------
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)