Bem-vindo, Visitante
Nome do utilizador: Senha: Memorizar
  • Página:
  • 1
  • 2

TÓPICO: Dificuldade em criar um recibo

Dificuldade em criar um recibo 1 ano 3 semanas atrás #10232

  • anakin84
  • Avatar de anakin84
  • DESLIGADO
  • Mensagens: 12
  • Obrigado recebido 1
Boa noite,

Estou com dificuldades em criar um recibo através da vossa API. Os recibos são criados, mas o valor pago é igual a 0 €, e não o valor que passei. Provavelmente estou a fazer alguma coisa mal. Aqui ficam as instruções (simplificadas) do que estou a correr:
Entidadesdocumentos entidadesDocumento = new Entidadesdocumentos(ColibriDatabase.loadDocumentostipos(type)); //type = CRE
entidadesDocumento.setEntidade(new ClientEngine().createOrUpdateEntity(invoiceTO)); //O metodo devolve a entidade do colibri

Entidadesdocumentoslinhas linhasDocumento = documento.createLinhasdocumento();
			
			Entidadesdocumentos payDocumento = getEntityById(COLIBRI_INVOICE_CODE, invoiceTO.getInvoiceId());
			linhasDocumento.setDatadocumento(payDocumento.getDatadocumento());
			linhasDocumento.setDocumento(payDocumento);
			linhasDocumento.setDescricao("Factura " + payDocumento.getKeyToText());
			
			linhasDocumento.setValorpagar(new BigDecimal(invoiceTO.getPayed()));
			
			linhasDocumento.process();
			
			documento.addLinhasdocumento(linhasDocumento);

entidadesDocumento.process();

ErrorList storeEntidadesdocumentos = ColibriDatabase.storeEntidadesdocumentos(entidadesDocumento);
		Iterator<String> errorList = storeEntidadesdocumentos.getErrors().iterator();
		if(errorList.hasNext()) {
			String error = errorList.next();
			System.out.println("Error creating invoice: " + error);
			throw new ColibriApiException("Error on field " + error);
		}
		
		Iterator<String> warnings = storeEntidadesdocumentos.getWarnings().iterator();
		while(warnings.hasNext()) {
			System.out.println(warnings.next());
		}
		
		if(entidadesDocumento.getNumerodocumento() != null) {
			invoiceTO.setInvoiceId(entidadesDocumento.getNumerodocumento().toString());
		}

Podem-me indicar o que estou a fazer mal?

Obrigado.

Cumprimentos,

Pedro Serra.
Última Edição: 1 ano 3 semanas atrás por marcolopes.
O adminstrador desactivou a escrita pública.

Dificuldade em criar um recibo 1 ano 3 semanas atrás #10233

  • marcolopes
  • Avatar de marcolopes
  • DESLIGADO
  • Mensagens: 4353
  • Obrigado recebido 598
anakin84 escreveu:
Estou com dificuldades em criar um recibo através da vossa API. Os recibos são criados, mas o valor pago é igual a 0 €, e não o valor que passei. Provavelmente estou a fazer alguma coisa mal. Aqui ficam as instruções (simplificadas) do que estou a correr

Efectivamente o projecto de exemplo não mostra como criar um recibo... e não é assim tão fácil se for feito de forma completamente "manual", uma vez que o recibo tem de "carregar" uma linha de MOVIMENTOS, referente ao documento a justificar.

A melhor forma é utilizar a classe de efectua o "paste" dos movimentos para o recibo, pois processa automaticamente as linhas, tendo em conta a ENTIDADE, se o movimento é uma DEDUÇÃO, etc...

O código será este:
Entidadesdocumentos documento=new Entidadesdocumentos("CRE");

Entidadesmovimentos movimento=ColibriDatabase.loadEntidadesmovimentos(
		Entidadesmovimentos.generateKey("CFA", "2016", 1));
		
new EntidadesmovimentosPaste(documento).process(Arrays.asList(movimento));

Entidadesdocumentoslinhas linha=documento.getLinhasdocumento(0);
linha.setValorpagar(new BigDecimal(invoiceTO.getPayed()));
linha.process();

documento.process();

ColibriDatabase.storeEntidadesdocumentos(documento).print();
Marco Lopes
Gestor de projecto
Análise e Programação
Última Edição: 1 ano 3 semanas atrás por marcolopes.
O adminstrador desactivou a escrita pública.

Dificuldade em criar um recibo 1 ano 3 semanas atrás #10236

  • anakin84
  • Avatar de anakin84
  • DESLIGADO
  • Mensagens: 12
  • Obrigado recebido 1
Bom dia,

Ao testar o código sugerido obtenho sempre o seguinte erro:
java.lang.NullPointerException at 
org.projectocolibri.rcp.colibri.dao.database.model.Entidadesdocumentos.createLinhasdocumento(Entidadesdocumentos.java:452) at 
org.projectocolibri.rcp.colibri.dao.database.processes.EntidadesmovimentosPaste.process(EntidadesmovimentosPaste.java:144) at 
org.projectocolibri.rcp.colibri.dao.database.processes.EntidadesmovimentosPaste.process(EntidadesmovimentosPaste.java:115) at 
org.projectocolibri.rcp.integration.restws.InvoiceWS.createReceipt(InvoiceWS.java:69) at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at 
java.lang.reflect.Method.invoke(Method.java:498) at 
org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) at 
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) at 
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) at 
org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205) at 
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) at 
org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) at 
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) at 
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) at 
org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326) at 
org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) at 
org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) at 
org.glassfish.jersey.internal.Errors.process(Errors.java:315) at 
org.glassfish.jersey.internal.Errors.process(Errors.java:297) at 
org.glassfish.jersey.internal.Errors.process(Errors.java:267) at 
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) at 
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) at 
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) at 
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:471) at 
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425) at 
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:383) at 
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336) at 
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223) at 
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821) at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583) at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:224) at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158) at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090) at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) at 
org.eclipse.jetty.server.Server.handle(Server.java:517) at 
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:306) at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) at 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261) at 
org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) at 
org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75) at 
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) at 
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) at 
java.lang.Thread.run(Thread.java:745)


O código é exactamente o sugerido
Última Edição: 1 ano 3 semanas atrás por marcolopes.
O adminstrador desactivou a escrita pública.

Dificuldade em criar um recibo 1 ano 3 semanas atrás #10239

  • anakin84
  • Avatar de anakin84
  • DESLIGADO
  • Mensagens: 12
  • Obrigado recebido 1
Aqui vai o ficheiro completo.

Ficheiro anexado:

Nome do Ficheiro: InvoiceWS.java.zip
Tamanho do Ficheiro: 2 KB
Última Edição: 1 ano 3 semanas atrás por anakin84.
O adminstrador desactivou a escrita pública.

Dificuldade em criar um recibo 1 ano 3 semanas atrás #10241

  • marcolopes
  • Avatar de marcolopes
  • DESLIGADO
  • Mensagens: 4353
  • Obrigado recebido 598
anakin84 escreveu:
Ao testar o código sugerido obtenho sempre o seguinte erro:
O código é exactamente o sugerido

Faltou a inicialização da ENTIDADE no objecto documento!

É sempre necessário carregar uma entidade no documento (a API 11 terá um método directo para criar o documento a partir do objecto da ENTIDADE, o que torna a tarefa mais lógica)

O código deverá ser:
Entidadesdocumentos entidadesDocumento = new Entidadesdocumentos(ColibriDatabase.loadDocumentostipos("CRE").getCodigo());
Entidadesmovimentos movimento=ColibriDatabase.loadEntidadesmovimentos(payDocumento.getKey());

entidadesDocumento.setEntidade(ColibriDatabase.loadEntidades(movimento.getEntidade().getKey()));

Poderia passar directamente a ENTIDADE do movimento para o documento, mas tal depende da "profundidade" com que o objecto é lido. Deve ser suficiente, mas a forma mais segura é sempre fazer um LOAD da base de dados.
Marco Lopes
Gestor de projecto
Análise e Programação
O adminstrador desactivou a escrita pública.

Dificuldade em criar um recibo 1 ano 3 semanas atrás #10242

  • anakin84
  • Avatar de anakin84
  • DESLIGADO
  • Mensagens: 12
  • Obrigado recebido 1
Boa noite,

Continua a dar erro, mas agora um bocadinho mais a baixo. A variável linha é null.

Não está fácil.
Entidadesdocumentos entidadesDocumento = new Entidadesdocumentos(ColibriDatabase.loadDocumentostipos("CRE"));

Entidadesdocumentos payDocumento = InvoiceEngine.getEntityById(InvoiceEngine.COLIBRI_INVOICE_CODE, invoiceTO.getInvoices().get(0).getInvoiceId());
Entidadesmovimentos movimento=ColibriDatabase.loadEntidadesmovimentos(payDocumento.getKey());

entidadesDocumento.setEntidade(ColibriDatabase.loadEntidades(movimento.getEntidade().getKey()));

new EntidadesmovimentosPaste(entidadesDocumento).process(Arrays.asList(movimento));

Entidadesdocumentoslinhas linha=entidadesDocumento.getLinhasdocumento(0);
if(linha == null) {
	throw new Exception("linha is null");
}
linha.setValorpagar(new BigDecimal(invoiceTO.getInvoices().get(0).getPayed()));
linha.process();

entidadesDocumento.process();

Cumprimentos,

André Macedo.
Última Edição: 1 ano 3 semanas atrás por marcolopes.
O adminstrador desactivou a escrita pública.
  • Página:
  • 1
  • 2
Moderadores: marcolopes