Ir para conteúdo
  • Cadastre-se

dev botao

Web service - NFs-e Pref. Promissao, por onde comecar ?


ANT.CARLOS.SP
  • Este tópico foi criado há 4350 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá boa tarde!

Estou implentando um aplicativo para envio de Nfs-e da cidade de Promissão mas estou com alguma dificuldade de iniciar, pois só tenho o apenas o WSDL e nenhum exemplo de XML.

Já uso um Componente AcbrNfe, mas desta vez vou ter q fazer na unha o teste para depois tentar modificar o AcbrNfs-e.

Abaixo segue a URL do WSDL e do LayOut do arquivo de envio.

http://www.fgmaiss.com.br/issqn/wservice/wsnfe_teste.php

http://www.fgmaiss.com.br/issqn/wservice/docs/layout_wsnfe.pdf

1 - Desejaria saber como devo proceder para montar o arquivo de envio dos dados ?

2 - O que vou reber no retorno ?

Desde já meus agradecimentos a quem puder ajudar.

100+

ANT.CARLOS/SP

Link para o comentário
Compartilhar em outros sites

Olá bom dia!

Fiz a importação do WSDL e gerei o Web Metodo,

agora preciso saber como enviar os dados para o metodo, pois tentei fazer desta maneira não funcionou.

Veja a implementação abaixo.

Como enviar os dados para a função "EnviaNfe" ?

100+

ANT.CARLOS/SP

=================================

Form de envio

=================================

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, wsnfe_teste, WB_DM;

type

TForm1 = class(TForm)

Button1: TButton;

Memo1: TMemo;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var envia : EnvNfe;

retorno : String;

prf, usr, ctr, cnpj, cnpjn, ie, im, lgr, num, cpl : String;

bai, cid, est, cep, fon, mail, dat, f1n, f1d, f1v, f2n : String;

f2d, f2v, f3n, f3d, f3v, f4n, f4d, f4v, f5n, f5d, f5v, f6n, f6d : String;

f6v, tem1, item2, item3, aliq1, aliq2, aliq3, val1, val2, val3, loc: String;

ret, txt, val, valtrib, iss, issret, desci, desco, binss, birrf, bcsll : String;

bpis, bcofins, ainss, airrf, acsll, apis, acofins, inss, irrf, csll, pis : String;

cofins : String;

begin

envia := EnvNfe.Create;

prf := '';

usr := '';

ctr := '';

cnpj := '';

cnpjn := '';

ie := '';

im := '';

lgr := '';

num := '';

cpl := '';

bai := '';

cid := '';

est := '';

cep := '';

fon := '';

mail := '';

dat := '';

f1n := '';

f1d := '';

f1v := '';

f2n := '';

f2d := '';

f2v := '';

f3n := '';

f3d := '';

f3v := '';

f4n := '';

f4d := '';

f4v := '';

f5n := '';

f5d := '';

f5v := '';

f6n := '';

f6d := '';

f6v := '';

item1 := '';

item2 := '';

item3 := '';

aliq1 := '';

aliq2 := '';

aliq3 := '';

val1 := '';

val2 := '';

val3 := '';

loc := '';

ret := '';

txt := '';

val := '';

valtrib := '';

iss := '';

issret := '';

desci := '';

desco := '';

binss := '';

birrf := '';

bcsll := '';

bpis := '';

bcofins := '';

ainss := '';

airrf := '';

acsll := '';

apis := '';

acofins := '';

inss := '';

irrf := '';

csll := '';

pis := '';

cofins := '';

//-----------------------------------------------//

//...Como enviar os dados para o Web Metodo ?

//-----------------------------------------------//

Retorno := EnvNfe(prf, usr, ctr, cnpj, cnpjn, ie, im, lgr, num, cpl, bai, cid, est, cep, fon, mail, dat,

f1n, f1d, f1v, f2n, f2d, f2v, f3n, f3d, f3v, f4n, f4d, f4v, f5n, f5d, f5v, f6n, f6d,

f6v, item1, item2,item3, aliq1,aliq2, aliq3,val1, val2, val3, loc, ret, txt, val, valtrib,

iss, issret, desci, desco, binss, birrf, bcsll, bpis, bcofins, ainss, airrf, acsll, apis,

acofins, inss, irrf, csll, pis, cofins);

========================================

Importacao do WSDL

========================================

// ************************************************************************ //

// The types declared in this file were generated from data read from the

// WSDL File described below:

// WSDL : C:\INTERBASE\SIS_Nfeletronica_Servico\Documentos\Promissao\wsnfe_teste.php.xml

// Encoding : ISO-8859-1

// Codegen : [wfDebug,wfVerbose,wfSkipHttpBindings,wfOneOutIsReturn,wfUnwindLiteralParameters,wfMapStringsToWideStrings,wfAutoDestroyMembers,wfGenerateWarnings,wfMapArraysToClasses,wfSkipUnusedTypes,wfUseSerializerClassForAttrs,wfValidateEnumMembers,wfProcessFaults,wfProcessHeaders]

// Version : 1.0

// (3/1/2012 09:01:58 - 1.33.2.5)

// ************************************************************************ //

unit wsnfe_teste;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;

type

EnvNfe = class;

// ************************************************************************ //

// Namespace : http://www.fgmaiss.com.br/issqn/ws/wsnfe_teste.php

// ************************************************************************ //

EnvNfe = class(TRemotable)

private

Fokk: String;

published

property okk: String read Fokk write Fokk;

end;

StrEnvNfe = array of EnvNfe;

// ************************************************************************ //

// Namespace : http://www.fgmaiss.com.br/issqn/ws/wsnfe_teste.php

// soapAction: http://www.fgmaiss.com.br/issqn/wservic ... php/EnvNfe

// transport : http://schemas.xmlsoap.org/soap/http

// style : rpc

// binding : webserviceBinding

// service : webservice

// port : webservicePort

// URL : http://www.fgmaiss.com.br/issqn/wservic ... _teste.php

// ************************************************************************ //

webservicePortType = interface(IInvokable)

['{F5E8C09B-C9AF-5E29-ED99-9829709C4046}']

function EnvNfe(const prf: String; const usr: String; const ctr: String; const cnpj: String; const cnpjn: String; const ie: String; const im: String; const lgr: String; const num: String; const cpl: String;

const bai: String; const cid: String; const est: String; const cep: String; const fon: String; const mail: String; const dat: String; const f1n: String; const f1d: String;

const f1v: String; const f2n: String; const f2d: String; const f2v: String; const f3n: String; const f3d: String; const f3v: String; const f4n: String; const f4d: String;

const f4v: String; const f5n: String; const f5d: String; const f5v: String; const f6n: String; const f6d: String; const f6v: String; const item1: String; const item2: String;

const item3: String; const aliq1: String; const aliq2: String; const aliq3: String; const val1: String; const val2: String; const val3: String; const loc: String; const ret: String;

const txt: String; const val: String; const valtrib: String; const iss: String; const issret: String; const desci: String; const desco: String; const binss: String; const birrf: String;

const bcsll: String; const bpis: String; const bcofins: String; const ainss: String; const airrf: String; const acsll: String; const apis: String; const acofins: String; const inss: String;

const irrf: String; const csll: String; const pis: String; const cofins: String): StrEnvNfe; stdcall;

end;

function GetwebservicePortType(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): webservicePortType;

implementation

function GetwebservicePortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): webservicePortType;

const

defWSDL = 'C:\INTERBASE\SIS_Nfeletronica_Servico\Documentos\Promissao\wsnfe_teste.php.xml';

defURL = 'http://www.fgmaiss.com.br/issqn/wservice/wsnfe_teste.php';

defSvc = 'webservice';

defPrt = 'webservicePort';

var

RIO: THTTPRIO;

begin

Result := nil;

if (Addr = '') then

begin

if UseWSDL then

Addr := defWSDL

else

Addr := defURL;

end;

if HTTPRIO = nil then

RIO := THTTPRIO.Create(nil)

else

RIO := HTTPRIO;

try

Result := (RIO as webservicePortType);

if UseWSDL then

begin

RIO.WSDLLocation := Addr;

RIO.Service := defSvc;

RIO.Port := defPrt;

end else

RIO.URL := Addr;

finally

if (Result = nil) and (HTTPRIO = nil) then

RIO.Free;

end;

end;

initialization

InvRegistry.RegisterInterface(TypeInfo(webservicePortType), 'http://www.fgmaiss.com.br/issqn/ws/wsnfe_teste.php', 'ISO-8859-1');

InvRegistry.RegisterDefaultSOAPAction(TypeInfo(webservicePortType), 'http://www.fgmaiss.com.br/issqn/wservice/wsnfe_teste.php/EnvNfe');

RemClassRegistry.RegisterXSClass(EnvNfe, 'http://www.fgmaiss.com.br/issqn/ws/wsnfe_teste.php', 'EnvNfe');

RemClassRegistry.RegisterXSInfo(TypeInfo(StrEnvNfe), 'http://www.fgmaiss.com.br/issqn/ws/wsnfe_teste.php', 'StrEnvNfe');

end.

========================================

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...

Olá!

Então consegui resolver o problema.

Depois de muita pesquisa descobri que era um recurso ou Bug do Delph-7 que teria q ser desativado para poder funcionar.

Pois o codigo fontes estava 100% certo.

----------------------------------------------------

Aqui vai como consertar a Limitação do D-7 e HTTPrio

----------------------------------------------------

Analisando a sua situação eu encontrei dois bugs, um era aquele já antes

informado por você "Too many parameters on method .......",

esse na verdade é uma limitação no fonte do componente HTTPRIO, segue

o passo-a-passo pra resolução do problema no seu componente HTTPRIO;

1- Editar o arquivo Rio.pas localizado em '.....\.....\Borland\Delphi7\Source\Soap'

2- Localizar o seguinte trecho do código e comentar as duas linhas;

if BytesPushed > 252 then

raise Exception.CreateFmt(STooManyParameters, [intfMD.MDA.Name]);

3- Salve o arquivo e abra o projeto, recompile, faça o teste, se continuou o

bug, então feche o projeto e vá em;

Tools > Environment Options, aba Library > Library Path

Adicionar o diretório do SOAP pra que o Delphi ao compilar o seu projeto recompile

o HTTPRIO com o código editado do HTTPRIO.

Abra novamente o projeto, recompile e teste novamente.

Link para o comentário
Compartilhar em outros sites

  • 6 meses depois ...
  • Este tópico foi criado há 4350 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.