Ir para conteúdo
Fórum Script Brasil

airam1968

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Tudo que airam1968 postou

  1. Obrigado Jhonas, vou verificar as dicas que passou e retorno aqui para postar a evolução disso. Obrigado mais uma vez.
  2. Olá Jhonas, Obrigado pelo reply, já tinha passado por este link em pesquisa anterior, mais meu problema não é um objeto de 1 camada, tenho um objeto com 3 camadas, e não consigo preencher as sub camadas que são outros objetos. Eu consigo montar o GET perfeitamente quando a sua estrutura. eu não consigo é levar todos os dados que preciso, abaixo tem um inspect do meu objeto um instante antes de gerar o JSON para o GET, perceba que os 2 ultimos itens, objetos Fitens e Ftitulos estão vazios porque realmente não sei como preenche-los.
  3. Bom Dia, Tenho um Servidor REST MVC com SQL Server que necessita retornar uma leitura do banco de dados com a estrutura (Cabeçalho + n Itens + n Títulos) portanto criei um uma classe com os dados de cabeçalho e duas classes com os Itens e Títulos para compor o objeto total. Como Segue Abaixo: type //Classe Item TDespesaItemModel = class private //Itens NF FIditem : string; FIdrd : string; FVlritem : Currency; FCcusto : string; FHistitem : string; private { Private declarations } public { Public declarations } property Iditem : String read FIditem write FIditem; property Idrd : String read FIdrd write FIdrd; property Vlritem : Currency read FVlritem write FVlritem; property Ccusto : string read FCcusto write FCcusto; property Histitem : string read FHistitem write FHistitem; end; TArrayItens = array of TDespesaItemModel; //Classe Titulo TDespesaTituloModel = class private //Itens Titulos FIdtitulo : string; FVencimento : string; FValor : Currency; FCnpj : string; FNome : string; FFantasia : string; FParcela : string; FTipotit : string; FProvisorio : string; private { Private declarations } public { Public declarations } property Idtitulo : String read FIdtitulo write FIdtitulo; property Vencimento : String read FVencimento write FVencimento; property Valor : Currency read FValor write FValor; property Cnpj : string read FCnpj write FCnpj; property Nome : string read FNome write FNome; property Fantasia : string read FFantasia write FFantasia; property Parcela : string read FParcela write FParcela; property Tipotit : string read FTipotit write FTipotit; property Provisorio : string read FProvisorio write FProvisorio; end; TArrayTitulos = array of TDespesaTituloModel; //Classe Despesa (NF + Itens + Titulos) TDespesaModel = class private //Cabeçalho NF FId : String; FLoja : String; FTipo : String; FConta : String; FDoc : String; FSerie : String; FTiponf : string; FCnpjfor : string; FNomefor : string; FNomefan : string; FHistorico : string; FEmissao : String; FDtlan : String; FValor : Currency; FEstorno : string; FChvnfe : string; FLinkxml : string; //Itens NF FItens : TArrayItens; //Itens Titulos FTitulos : TArrayTitulos; private { Private declarations } public { Public declarations } function Incluir(AJSON: TJSONObject): TJSONValue; //put function Alterar(AJSON: TJSONObject): TJSONValue; //post function Excluir(AId: String): TJSONValue; // delete function Obter: TJSONArray; //get property Id : String read FId write FId; property Loja : String read FLoja write FLoja; property Tipo : String read FTipo write FTipo; property Conta : String read FConta write FConta; property Doc : String read FDoc write FDoc; property Serie : String read FSerie write FSerie; property Tiponf : string read FTiponf write FTiponf; property Cnpjfor : string read FCnpjfor write FCnpjfor; property Nomefor : string read FNomefor write FNomefor; property Nomefan : string read FNomefan write FNomefan; property Historico: string read FHistorico write FHistorico; property Emissao : String read FEmissao write FEmissao; property Dtlan : String read FDtlan write FDtlan; property Valor : Currency read FValor write FValor; property Estorno : string read FEstorno write FEstorno; property Chvnfe : string read FChvnfe write FChvnfe; property Linkxml : string read FLinkxml write FLinkxml; property Itens : TArrayItens read FItens write FItens; property Titulos : TArrayTitulos read FTitulos write FTitulos; end; TDespesaModels = TObjectList<TDespesaModel>; Com esta estrutura meu servidor funciona perfeitamente, para PUT, POST, DELETE. Mais preciso montar o GET, retornando o conteúdo abaixo: { "id": "010100075689000100025701N", "loja": "000000000001", "tipo": "01", "conta": "0987654321", "doc": "000756890", "serie": "001", "tiponf": "NFE", "cnpjfor": "07946894000156", "nomefor": "Phoenyx Consultoria, treinamento e Desenv. Soft", "nomefan": "Phoenyx Tecnologia", "historico": "Phoenyx Consultoria, treinamento e Desenv. Soft20200220000756890", "emissao": "20200220", "dtlan": "20200220", "valor": 17351.28, "estorno": "N", "chvnfe": "35080599999090910270550010000000015180051273", "linkxml": "35080599999090910270550010000000015180051273.xml", "itens": [ { "iditem": "010100075689000100025701N01", "idrd": "012345678901", "vlritem": 5351, "ccusto": "000101347", "histitem": "001PCBALCAO ELETRONICO" }, { "iditem": "010100075689000100025701N02", "idrd": "012345678949", "vlritem": 12000.28, "ccusto": "000101348", "histitem": "006PCBANCO ALMOFADADO" } ], "titulos": [ { "idtitulo": "01010007568900010002570101NF", "vencimento": "20200320", "valor": 17351.28, "cnpj": "07946894000156", "nome": "Phoenyx Consultoria, treinamento e Desenv. Soft", "fantasia": "Phoenyx Tecnologia", "parcela": "01", "tipotit": "NF", "provisorio": "N" }, { "idtitulo": "01010007568900010002570102IMP", "vencimento": "20200320", "valor": 1067.1, "cnpj": "07946894000156", "nome": "Phoenyx Consultoria, treinamento e Desenv. Soft", "fantasia": "Phoenyx Tecnologia", "parcela": "02", "tipotit": "IMP", "provisorio": "S" } ] } Para isso tenho 3 tabelas no SQL, Cabeçalho, Itens e Títulos. Agora abaixo vou apresentar o problema que tenho enfrentando para construir um Objeto para depois transforma-lo em um objeto JSON e remeter como Response: function TDespesaDao.Obter: TObjectList<TDespesaModel>; var VQry : TFDQuery; VQryi : TFDQuery; VQryt : TFDQuery; VLista : TObjectList<TDespesaModel>; VDespesa : TDespesaModel; VItens : TArrayItens; VTitulos : TArrayTitulos; i, j : integer; begin VQry := TSistemaControl.GetInstance().Conexao.CriarQuery(); VQryi := TSistemaControl.GetInstance().Conexao.CriarQuery(); VQryt := TSistemaControl.GetInstance().Conexao.CriarQuery(); VQry.Open('select * from dbo.TOTVS001 with(nolock) ' + ' order by 1'); //where TOTVS001.ID_NF = '010100075689000100025701N' VQry.First; // //Itens NF VQryi.Open('select * from dbo.TOTVS001Item with(nolock) ' + ' where id_nf = ' + QuotedStr(VQry.FieldByName('id_nf').AsString) + ' order by 1'); VQryi.First; // //Titulos VQryt.Open('select * from dbo.TOTVS001Tit with(nolock) ' + ' where id_nf = ' + QuotedStr(VQry.FieldByName('id_nf').AsString) + ' order by 1'); VQryt.First; //Cabeçalho VLista := TObjectList<TDespesaModel>.Create; while not VQry.Eof do begin VDespesa := TDespesaModel.Create; VDespesa.Id := VQry.FieldByName('id_nf').AsString; VDespesa.Loja := VQry.FieldByName('loja').AsString; VDespesa.Tipo := VQry.FieldByName('tipo').AsString; VDespesa.Conta := VQry.FieldByName('conta').AsString; VDespesa.Doc := VQry.FieldByName('doc').AsString; VDespesa.Serie := VQry.FieldByName('serie').AsString; VDespesa.Tiponf := VQry.FieldByName('tiponf').AsString; VDespesa.Cnpjfor := VQry.FieldByName('cnpjfor').AsString; VDespesa.Nomefor := VQry.FieldByName('nomefor').AsString; VDespesa.Nomefan := VQry.FieldByName('nomefan').AsString; VDespesa.Historico := VQry.FieldByName('historico').AsString; VDespesa.Emissao := VQry.FieldByName('emissao').AsString; VDespesa.Dtlan := VQry.FieldByName('dtlan').AsString; VDespesa.Valor := VQry.FieldByName('valor').AsCurrency; VDespesa.Estorno := VQry.FieldByName('estorno').AsString; VDespesa.Chvnfe := VQry.FieldByName('chvnfe').AsString; VDespesa.Linkxml := VQry.FieldByName('linkxml').AsString; //Como incluir os Itens dentro do objeto Principal? SetLength(VItens, 1); VItens := [[VQryi.FieldByName('Iditem').AsString, VQryi.FieldByName('idrd').AsString, VQryi.FieldByName('vlritem').AsCurrency, VQryi.FieldByName('ccusto').AsString, VQryi.FieldByName('histitem').AsString]]; /////////////////////////////////////////////////////////////////////////////// VLista.Add(VDespesa); VQry.Next; end; // VQry.Close; VQryi.Close; VQryt.Close; Result := VLista; end; A partir deste momento a Vlista é remetida para ser colocada no RESPONSE. Agradeço antecipadamente qualquer ajuda, Atenciosamente,
×
×
  • Criar Novo...