Commit 6b6ef2a2 authored by Thiago Anders's avatar Thiago Anders

Caso de uso emprestar livro finalizado.

parent 871e43cc
This diff is collapsed.
...@@ -366,7 +366,7 @@ begin ...@@ -366,7 +366,7 @@ begin
prop := lClassMapTicket.NewAttributeTicket('DataDev', 'acDateTime', pvPersistent, False); prop := lClassMapTicket.NewAttributeTicket('DataDev', 'acDateTime', pvPersistent, False);
prop.FixSize := 0; prop.FixSize := 0;
prop.VarSize := 0; prop.VarSize := 0;
prop.Mandatory := True; prop.Mandatory := False;
prop.DBType := 'DATETIME'; prop.DBType := 'DATETIME';
lClassToDBMapTicket.NewDbColumnMapRegisterTicket(prop).ColumnName := 'DATADEV'; lClassToDBMapTicket.NewDbColumnMapRegisterTicket(prop).ColumnName := 'DATADEV';
...@@ -1502,6 +1502,127 @@ begin ...@@ -1502,6 +1502,127 @@ begin
''; '';
end; end;
function GetXSDOut_3219_smucEmprestarLivro_EditandoEmprestimos_RM_CONCLUIR_EDICAO_EMPRESTIMO: String;
begin
Result := '<?xml version="1.0"?>' + #13#10 +
'<!--Created with Liquid XML Studio 6.1.18.0 - FREE Community Edition (http://www.liquid-technologies.com)-->' + #13#10 +
'<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">' + #13#10 +
' <xs:element name="SYSMSG">' + #13#10 +
' <xs:complexType>' + #13#10 +
' <xs:sequence minOccurs="1" maxOccurs="1">' + #13#10 +
' <xs:element name="Cliente">' + #13#10 +
' <xs:complexType>' + #13#10 +
' <xs:sequence minOccurs="1" maxOccurs="1">' + #13#10 +
' <xs:element name="Emprestimos">' + #13#10 +
' <xs:complexType>' + #13#10 +
' <xs:sequence minOccurs="1" maxOccurs="unbounded">' + #13#10 +
' <xs:element name="Emprestimo">' + #13#10 +
' <xs:complexType>' + #13#10 +
' <xs:sequence minOccurs="1" maxOccurs="1">' + #13#10 +
' <xs:element name="Exemplar">' + #13#10 +
' <xs:complexType>' + #13#10 +
' <xs:sequence minOccurs="1" maxOccurs="1">' + #13#10 +
' <xs:element name="Livro">' + #13#10 +
' <xs:complexType>' + #13#10 +
' <xs:attribute name="Titulo" type="xs:string" use="required"/>' + #13#10 +
' <xs:attribute name="Autor" type="xs:string" use="required"/>' + #13#10 +
' <xs:attribute name="OID" type="xs:int" use="required"/>' + #13#10 +
' <xs:anyAttribute processContents="skip"/>' + #13#10 +
' </xs:complexType>' + #13#10 +
' </xs:element>' + #13#10 +
' </xs:sequence>' + #13#10 +
' <xs:attribute name="Codigo" type="xs:string" use="required"/>' + #13#10 +
' <xs:attribute name="OID" type="xs:int" use="required"/>' + #13#10 +
' <xs:anyAttribute processContents="skip"/>' + #13#10 +
' </xs:complexType>' + #13#10 +
' </xs:element>' + #13#10 +
' </xs:sequence>' + #13#10 +
' <xs:attribute name="Retirada" type="xs:date" use="required"/>' + #13#10 +
' <xs:attribute name="PrevistaDev" type="xs:date" use="required"/>' + #13#10 +
' <xs:attribute name="OID" type="xs:int" use="required"/>' + #13#10 +
' <xs:anyAttribute processContents="skip"/>' + #13#10 +
' </xs:complexType>' + #13#10 +
' </xs:element>' + #13#10 +
' </xs:sequence>' + #13#10 +
' <xs:anyAttribute processContents="skip"/>' + #13#10 +
' </xs:complexType>' + #13#10 +
' </xs:element>' + #13#10 +
' </xs:sequence>' + #13#10 +
' <xs:attribute name="Nome" type="xs:string" use="required"/>' + #13#10 +
' <xs:attribute name="CPF" type="xs:string" use="required"/>' + #13#10 +
' <xs:attribute name="OID" type="xs:int" use="required"/>' + #13#10 +
' <xs:anyAttribute processContents="skip"/>' + #13#10 +
' </xs:complexType>' + #13#10 +
' </xs:element>' + #13#10 +
' </xs:sequence>' + #13#10 +
' <xs:anyAttribute processContents="skip"/>' + #13#10 +
' </xs:complexType>' + #13#10 +
' </xs:element>' + #13#10 +
'</xs:schema>' + #13#10 +
'';
end;
function GetXSDIn_3219_smucEmprestarLivro_EditandoEmprestimos_RM_REMOVER_EXEMPLAR: String;
begin
Result := '<?xml version="1.0"?>' + #13#10 +
'<!--Created with Liquid XML Studio 6.1.18.0 - FREE Community Edition (http://www.liquid-technologies.com)-->' + #13#10 +
'<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">' + #13#10 +
' <xs:element name="SYSMSG">' + #13#10 +
' <xs:complexType>' + #13#10 +
' <xs:sequence minOccurs="1" maxOccurs="1">' + #13#10 +
' <xs:element name="Exemplar">' + #13#10 +
' <xs:complexType>' + #13#10 +
' <xs:attribute name="OID" type="xs:int" use="required"/>' + #13#10 +
' </xs:complexType>' + #13#10 +
' </xs:element>' + #13#10 +
' </xs:sequence>' + #13#10 +
' <xs:anyAttribute processContents="skip"/>' + #13#10 +
' </xs:complexType>' + #13#10 +
' </xs:element>' + #13#10 +
'</xs:schema>' + #13#10 +
'';
end;
function GetXSDOut_3219_smucEmprestarLivro_EditandoEmprestimos_RM_REMOVER_EXEMPLAR: String;
begin
Result := '<?xml version="1.0"?>' + #13#10 +
'<!--Created with Liquid XML Studio 6.1.18.0 - FREE Community Edition (http://www.liquid-technologies.com)-->' + #13#10 +
'<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">' + #13#10 +
' <xs:element name="SYSMSG">' + #13#10 +
' <xs:complexType>' + #13#10 +
' <xs:sequence minOccurs="1" maxOccurs="1">' + #13#10 +
' <xs:element name="Exemplares">' + #13#10 +
' <xs:complexType>' + #13#10 +
' <xs:sequence minOccurs="0" maxOccurs="unbounded">' + #13#10 +
' <xs:element name="Exemplar">' + #13#10 +
' <xs:complexType>' + #13#10 +
' <xs:sequence minOccurs="1" maxOccurs="1">' + #13#10 +
' <xs:element name="Livro">' + #13#10 +
' <xs:complexType>' + #13#10 +
' <xs:attribute name="Titulo" type="xs:string" use="required"/>' + #13#10 +
' <xs:attribute name="Edicao" type="xs:string" use="required"/>' + #13#10 +
' <xs:attribute name="Autor" type="xs:string" use="required"/>' + #13#10 +
' <xs:attribute name="OID" type="xs:int" use="required"/>' + #13#10 +
' </xs:complexType>' + #13#10 +
' </xs:element>' + #13#10 +
' </xs:sequence>' + #13#10 +
' <xs:attribute name="Codigo" type="xs:string" use="required"/>' + #13#10 +
' <xs:attribute name="OID" type="xs:int" use="required"/>' + #13#10 +
' <xs:anyAttribute processContents="skip"/>' + #13#10 +
' </xs:complexType>' + #13#10 +
' </xs:element>' + #13#10 +
' </xs:sequence>' + #13#10 +
' <xs:anyAttribute processContents="skip"/>' + #13#10 +
' </xs:complexType>' + #13#10 +
' </xs:element>' + #13#10 +
' </xs:sequence>' + #13#10 +
' <xs:anyAttribute processContents="skip"/>' + #13#10 +
' </xs:complexType>' + #13#10 +
' </xs:element>' + #13#10 +
'</xs:schema>' + #13#10 +
'';
end;
function GetXSDIn_3219_smucEmprestarLivro_EscolhendoExemplar_RM_PESQUISAR_EXEMPLAR: String; function GetXSDIn_3219_smucEmprestarLivro_EscolhendoExemplar_RM_PESQUISAR_EXEMPLAR: String;
begin begin
Result := '<?xml version="1.0"?>' + #13#10 + Result := '<?xml version="1.0"?>' + #13#10 +
...@@ -1597,7 +1718,7 @@ begin ...@@ -1597,7 +1718,7 @@ begin
'<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">' + #13#10 + '<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">' + #13#10 +
' <xs:element name="SYSMSG">' + #13#10 + ' <xs:element name="SYSMSG">' + #13#10 +
' <xs:complexType>' + #13#10 + ' <xs:complexType>' + #13#10 +
' <xs:sequence>' + #13#10 + ' <xs:sequence minOccurs="1" maxOccurs="1">' + #13#10 +
' <xs:element name="Exemplar">' + #13#10 + ' <xs:element name="Exemplar">' + #13#10 +
' <xs:complexType>' + #13#10 + ' <xs:complexType>' + #13#10 +
' <xs:attribute name="OID" type="xs:int" use="required"/>' + #13#10 + ' <xs:attribute name="OID" type="xs:int" use="required"/>' + #13#10 +
...@@ -2487,11 +2608,14 @@ begin ...@@ -2487,11 +2608,14 @@ begin
lTransition.TargetState := lStateMachine.FindState('Confirmando'); lTransition.TargetState := lStateMachine.FindState('Confirmando');
lTransition.AddTrigger('RM_CONCLUIR_EDICAO_EMPRESTIMO'); lTransition.AddTrigger('RM_CONCLUIR_EDICAO_EMPRESTIMO');
lTransition.AddEffect('Effect_ConcluirEdicaoEmprestimo'); lTransition.AddEffect('Effect_ConcluirEdicaoEmprestimo');
lTransition.XsdOut.XML := GetXSDOut_3219_smucEmprestarLivro_EditandoEmprestimos_RM_CONCLUIR_EDICAO_EMPRESTIMO;
lTransition := lState.NewOutgoingTransition('RM_REMOVER_EXEMPLAR'); lTransition := lState.NewOutgoingTransition('RM_REMOVER_EXEMPLAR');
lTransition.SourceState := lState; lTransition.SourceState := lState;
lTransition.TargetState := lState; lTransition.TargetState := lState;
lTransition.AddTrigger('RM_REMOVER_EXEMPLAR'); lTransition.AddTrigger('RM_REMOVER_EXEMPLAR');
lTransition.AddEffect('Effect_RemoverExemplar'); lTransition.AddEffect('Effect_RemoverExemplar');
lTransition.XsdIn.XML := GetXSDIn_3219_smucEmprestarLivro_EditandoEmprestimos_RM_REMOVER_EXEMPLAR;
lTransition.XsdOut.XML := GetXSDOut_3219_smucEmprestarLivro_EditandoEmprestimos_RM_REMOVER_EXEMPLAR;
lState := lStateMachine.FindState('EscolhendoExemplar'); lState := lStateMachine.FindState('EscolhendoExemplar');
lTransition := lState.NewOutgoingTransition('RM_CANCELAR_ESCOLHA_EXEMPLAR'); lTransition := lState.NewOutgoingTransition('RM_CANCELAR_ESCOLHA_EXEMPLAR');
......
...@@ -4,7 +4,7 @@ unit nguEmprestimo; ...@@ -4,7 +4,7 @@ unit nguEmprestimo;
interface interface
uses uses
acuframework; acuframework, utuMessage;
type type
ngEmprestimo = class(acPersistentObject) ngEmprestimo = class(acPersistentObject)
...@@ -14,6 +14,8 @@ type ...@@ -14,6 +14,8 @@ type
FDataDev: acDateTime; FDataDev: acDateTime;
fCliente: acRelationPartnerShip; fCliente: acRelationPartnerShip;
fExemplar: acRelationPartnerShip; fExemplar: acRelationPartnerShip;
public
procedure toXML(piField: utField);
published published
property Retirada: acDateTime read FRetirada write FRetirada; property Retirada: acDateTime read FRetirada write FRetirada;
property PrevistaDev: acDateTime read FPrevistaDev write FPrevistaDev; property PrevistaDev: acDateTime read FPrevistaDev write FPrevistaDev;
...@@ -24,6 +26,12 @@ type ...@@ -24,6 +26,12 @@ type
implementation implementation
procedure ngEmprestimo.toXML(piField: utField);
begin
piField.AddAttribute('OID').AsString := Self.IDO.AsString;
piField.AddAttribute('Retirada').AsDate := Self.Retirada.Value;
piField.AddAttribute('PrevistaDev').AsDate := Self.PrevistaDev.Value;
end;
initialization initialization
......
...@@ -12,12 +12,14 @@ type ...@@ -12,12 +12,14 @@ type
procedure Initialize; Override; procedure Initialize; Override;
procedure Finalize; Override; procedure Finalize; Override;
private private
//fCliente : ngCliente; fCliente: ngCliente;
//fListaEmprestimos : acPersistentObjectList; fListaExemplares: acPersistentObjectList;
fSavePoint: acPersistenceSessionSavePoint;
published published
procedure Effect_PesquisarUsuario(piRequest: utRequest; piTransition: utTransition); procedure Effect_PesquisarUsuario(piRequest: utRequest; piTransition: utTransition);
procedure Effect_EscolherUsuario(piRequest: utRequest; piTransition: utTransition); procedure Effect_EscolherUsuario(piRequest: utRequest; piTransition: utTransition);
procedure Effect_PesquisarExemplar(piRequest: utRequest; piTransition: utTransition); procedure Effect_PesquisarExemplar(piRequest: utRequest; piTransition: utTransition);
procedure Effect_SelecionarExemplar(piRequest: utRequest; piTransition: utTransition);
procedure Effect_CancelarEscolhaExemplar(piRequest: utRequest; piTransition: utTransition); procedure Effect_CancelarEscolhaExemplar(piRequest: utRequest; piTransition: utTransition);
procedure Effect_ConcluirEdicaoEmprestimo(piRequest: utRequest; piTransition: utTransition); procedure Effect_ConcluirEdicaoEmprestimo(piRequest: utRequest; piTransition: utTransition);
procedure Effect_RemoverExemplar(piRequest: utRequest; piTransition: utTransition); procedure Effect_RemoverExemplar(piRequest: utRequest; piTransition: utTransition);
...@@ -34,16 +36,19 @@ uses ...@@ -34,16 +36,19 @@ uses
acuObject {define acEnumerator}, acuObject {define acEnumerator},
nguExemplar, nguExemplar,
nguLivro, nguLivro,
nguSituacaoExemplar; nguSituacaoExemplar,
nguEmprestimo,
dateUtils;
procedure ucEmprestarLivro.Initialize; procedure ucEmprestarLivro.Initialize;
begin begin
inherited; inherited;
fListaExemplares := acPersistentObjectList.Create(ngExemplar);
end; end;
procedure ucEmprestarLivro.Finalize; procedure ucEmprestarLivro.Finalize;
begin begin
fListaExemplares.Free;
inherited; inherited;
end; end;
...@@ -110,6 +115,9 @@ begin ...@@ -110,6 +115,9 @@ begin
else else
raise EucException.Create('No foi possvel buscar o cliente.'); raise EucException.Create('No foi possvel buscar o cliente.');
end; end;
{Cliente da session marcado}
fCliente := lCliente;
//if not Assigned(lCliente) then raise EucException.Create('Cliente no encontrado.'); //if not Assigned(lCliente) then raise EucException.Create('Cliente no encontrado.');
...@@ -133,8 +141,6 @@ var ...@@ -133,8 +141,6 @@ var
lSituacao: ngSituacaoExemplar; lSituacao: ngSituacaoExemplar;
begin begin
lFieldExemplar := piRequest.Message.RootField.FieldByName('Exemplar'); lFieldExemplar := piRequest.Message.RootField.FieldByName('Exemplar');
//if lFieldExemplar.HasField('Livro')
//then lFieldLivro := lFieldExemplar.FieldByName('Livro');
lOQL := utEmprestimoOQL.ObterExemplares(Self.Session); lOQL := utEmprestimoOQL.ObterExemplares(Self.Session);
...@@ -164,7 +170,7 @@ begin ...@@ -164,7 +170,7 @@ begin
try try
lExemplar := lEnumExemplares.Current as ngExemplar; lExemplar := lEnumExemplares.Current as ngExemplar;
lLivro := lExemplar.Livro.Partner as ngLivro; lLivro := lExemplar.Livro.Partner as ngLivro;
{Guardamos ultimo livro para agrup-los e criamos seu campo exemplares} {Guardamos ultimo livro para agrup-los e criamos seu campo exemplares}
lUltimoLivro := lLivro; lUltimoLivro := lLivro;
lFieldLivro := lFieldLivros.AddField('Livro'); lFieldLivro := lFieldLivros.AddField('Livro');
...@@ -206,31 +212,210 @@ begin ...@@ -206,31 +212,210 @@ begin
piRequest.Processed := True; piRequest.Processed := True;
end; end;
procedure ucEmprestarLivro.Effect_SelecionarExemplar(piRequest: utRequest; piTransition: utTransition);
var
lFieldExemplar,
lFieldExemplares,
lFieldLivro: utField;
lEnumExemplares: acEnumerator;
lExemplar: ngExemplar;
lLivro: ngLivro;
begin
lFieldExemplar := piRequest.Message.RootField.FieldByName('Exemplar');
LFieldExemplares := piRequest.Response.RootField.AddField('Exemplares');
try
lExemplar := Self.Session.LoadObject(ngExemplar,acOIDInt.Create(lFieldExemplar.AttributeByName('OID').AsInteger)) as ngExemplar;
except
on e:acObjectNotFoundException do
raise EucException.Create('Exemplar no encontrado.');
else
raise EucException.Create('No foi possvel buscar o exemplar.');
end;
{Acrescentamos o exemplar a lista de selecionados}
if fListaExemplares.IndexOf(lExemplar) = -1 then
fListaExemplares.Add(lExemplar)
else
raise EucException.Create('Exemplar j est selecionado na lista.');
lEnumExemplares := acEnumerator.Create(fListaExemplares);
{Criamos o xml de resposta}
try
while not lEnumExemplares.EOL do
begin
lExemplar := lEnumExemplares.Current as ngExemplar;
lFieldExemplar := lFieldExemplares.AddField('Exemplar');
lExemplar.toXML(lFieldExemplar);
lFieldLivro := lFieldExemplar.AddField('Livro');
lLivro := lExemplar.Livro.Partner as ngLivro;
lLivro.toXML(lFieldLivro);
lEnumExemplares.MoveNext;
end;
finally
lEnumExemplares.Free;
end;
piRequest.Processed := True;
end;
procedure ucEmprestarLivro.Effect_CancelarEscolhaExemplar(piRequest: utRequest; piTransition: utTransition); procedure ucEmprestarLivro.Effect_CancelarEscolhaExemplar(piRequest: utRequest; piTransition: utTransition);
var
lFieldExemplar,
lFieldExemplares,
lFieldLivro: utField;
lEnumExemplares: acEnumerator;
lExemplar: ngExemplar;
lLivro: ngLivro;
begin begin
lFieldExemplares := piRequest.Response.RootField.AddField('Exemplares');
lEnumExemplares := acEnumerator.Create(fListaExemplares);
{Criamos o xml de resposta}
try
while not lEnumExemplares.EOL do
begin
lExemplar := lEnumExemplares.Current as ngExemplar;
lFieldExemplar := lFieldExemplares.AddField('Exemplar');
lExemplar.toXML(lFieldExemplar);
lFieldLivro := lFieldExemplar.AddField('Livro');
lLivro := lExemplar.Livro.Partner as ngLivro;
lLivro.toXML(lFieldLivro);
lEnumExemplares.MoveNext;
end;
finally
lEnumExemplares.Free;
end;
piRequest.Processed := True; piRequest.Processed := True;
end; end;
procedure ucEmprestarLivro.Effect_ConcluirEdicaoEmprestimo(piRequest: utRequest; piTransition: utTransition); procedure ucEmprestarLivro.Effect_ConcluirEdicaoEmprestimo(piRequest: utRequest; piTransition: utTransition);
var
lFieldCliente,
lFieldEmprestimos,
lFieldEmprestimo,
lFieldExemplar,
lFieldLivro: utField;
lEmprestimo: ngEmprestimo;
lExemplar: ngExemplar;
lLivro: ngLivro;
lEnumExemplares: acEnumerator;
begin begin
fSavePoint := Self.Session.AddSavePoint;
try
lFieldCliente := piRequest.Response.RootField.AddField('Cliente');
fCliente.toXML(lFieldCliente);
lFieldEmprestimos := lFieldCliente.AddField('Emprestimos');
lEnumExemplares := acEnumerator.Create(fListaExemplares);
try
while not lEnumExemplares.EOL do
begin
lEmprestimo := ngEmprestimo.CreateNew(Self.Session);
lExemplar := lEnumExemplares.Current as ngExemplar;
lLivro := lExemplar.Livro.Partner as ngLivro;
lEmprestimo.Cliente.Partner := fCliente;
lEmprestimo.Exemplar.Partner := lExemplar;
lEmprestimo.Retirada.Value := dateUtils.Today;
lEmprestimo.PrevistaDev.Value := dateUtils.IncWeek(lEmprestimo.Retirada.Value,3);
lFieldEmprestimo := lFieldEmprestimos.AddField('Emprestimo');
lEmprestimo.toXML(lFieldEmprestimo);
lFieldExemplar := lFieldEmprestimo.AddField('Exemplar');
lExemplar.toXML(lFieldExemplar);
lFieldLivro := lFieldExemplar.AddField('Livro');
lLivro.toXML(lFieldLivro);
lEnumExemplares.MoveNext;
end;
finally
lEnumExemplares.Free;
end;
except
Self.Session.RollBackToSavePoint(fSavePoint);
raise;
end;
piRequest.Processed := True; piRequest.Processed := True;
end; end;
procedure ucEmprestarLivro.Effect_RemoverExemplar(piRequest: utRequest; piTransition: utTransition); procedure ucEmprestarLivro.Effect_RemoverExemplar(piRequest: utRequest; piTransition: utTransition);
var
lFieldExemplar,
lFieldExemplares,
lFieldLivro: utField;
lEnumExemplares: acEnumerator;
lExemplar: ngExemplar;
lLivro: ngLivro;
begin begin
lFieldExemplar := piRequest.Message.RootField.FieldByName('Exemplar');
LFieldExemplares := piRequest.Response.RootField.AddField('Exemplares');
try
lExemplar := Self.Session.LoadObject(ngExemplar,acOIDInt.Create(lFieldExemplar.AttributeByName('OID').AsInteger)) as ngExemplar;
except
on e:acObjectNotFoundException do
raise EucException.Create('Exemplar a ser removido no pode ser encontrado.');
else
raise EucException.Create('No foi possvel remover o exemplar.');
end;
{Removemos de fato da lista}
if fListaExemplares.IndexOf(lExemplar) <> -1 then
fListaExemplares.Extract(lExemplar)
else
raise EucException.Create('Exemplar no est na lista de exemplares do cliente.');
{Criamos o xml de resposta}
try
lEnumExemplares := acEnumerator.Create(fListaExemplares);
while not lEnumExemplares.EOL do
begin
lExemplar := lEnumExemplares.Current as ngExemplar;
lFieldExemplar := lFieldExemplares.AddField('Exemplar');
lExemplar.toXML(lFieldExemplar);
lFieldLivro := lFieldExemplar.AddField('Livro');
lLivro := lExemplar.Livro.Partner as ngLivro;
lLivro.toXML(lFieldLivro);
lEnumExemplares.MoveNext;
end;
finally
lEnumExemplares.Free;
end;
piRequest.Processed := True; piRequest.Processed := True;
end; end;
procedure ucEmprestarLivro.Effect_ConfirmarEmprestimo(piRequest: utRequest; piTransition: utTransition); procedure ucEmprestarLivro.Effect_ConfirmarEmprestimo(piRequest: utRequest; piTransition: utTransition);
var
lSavePoint: acPersistenceSessionSavePoint;
begin begin
lSavePoint := Self.Session.AddSavePoint;
try
Self.Session.Save;
except
Self.Session.RollBackToSavePoint(lSavePoint);
raise;
end;
piRequest.Processed := True; piRequest.Processed := True;
end; end;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment