meta data de esta página
¡Esta es una revisión vieja del documento!
Ejemplo en lenguaje JAVA
Este código explica de manera sencilla como integrarse al servicio web de facturación electrónica
Pasos para realizar la integración:
PASO 1: Configurar la ruta de nuestro servicio web y tokens de prueba.
PASO 2: Construir el objeto documento electrónico.
PASO 3: Enviar el objeto documento electrónico a través del método enviar de nuestro servicio web.
PASO 4: Obtener la respuesta de nuestro servicio web.
package tf_pa_ejemplo_directo_java; public class Tf_Pa_ejemplo_directo_java { public static void main(String[] args) { EnviarDocumentoElectronico enviar; enviar = new EnviarDocumentoElectronico(); } }
package tf_pa_ejemplo_directo_java; //import java.awt.Desktop; import java.net.MalformedURLException; import java.net.URISyntaxException; import java.net.URL; import java.text.SimpleDateFormat; import java.util.Date; import javax.xml.ws.BindingProvider; import org.datacontract.schemas._2004._07.services.EnviarResponse; import org.datacontract.schemas._2004._07.services_objcomprobante.ObjectFactory; import org.datacontract.schemas._2004._07.services_objcomprobante.DocumentoElectronico; import org.datacontract.schemas._2004._07.services_objcomprobante.Cliente; import org.datacontract.schemas._2004._07.services_objcomprobante.DatosTransaccion; import org.datacontract.schemas._2004._07.services_objcomprobante.DocFiscalReferenciado; import org.datacontract.schemas._2004._07.services_objcomprobante.ListaDocsFiscalReferenciados; import org.datacontract.schemas._2004._07.services_objcomprobante.ListaItems; import org.datacontract.schemas._2004._07.services_objcomprobante.Item; import org.datacontract.schemas._2004._07.services_objcomprobante.TotalesSubTotales; import org.datacontract.schemas._2004._07.services_objcomprobante.ListaFormaPago; import org.datacontract.schemas._2004._07.services_objcomprobante.FormaPago; import org.datacontract.schemas._2004._07.services_objcomprobante.Retencion;
PASO 1: Configurar la ruta de nuestro servicio web y tokens de prueba
Cuenta demo para hacer pruebas
LINK: http://demoemision.thefactoryhka.com.pa/ws/obj/v1.0/Service.svc?wsdl
Usuario: “SOLICITAR”;
Password: “SOLICITAR”;
Se instancia los objetos utilizados
String wsdl = “http://demoemision.thefactoryhka.com.pa/ws/obj/v1.0/Service.svc?wsdl”;
String tokenEmpresa = "SOLICITAR"; String tokenPassword = "SOLICITAR"; org.tempuri.Service service = new org.tempuri.Service(); org.tempuri.IService port = service.getBasicHttpBindingIService(); BindingProvider bindingProvider = (BindingProvider) port; DocumentoElectronico documentoElectronico = new DocumentoElectronico(); DatosTransaccion datosTransaccion = new DatosTransaccion(); Item item = new Item(); ObjectFactory factory = new ObjectFactory(); Date fechaHoy = new Date(); SimpleDateFormat fechaHoyFormat = new SimpleDateFormat("yyyy-MM-dd"+"'T'"+"HH:mm:ss"+"'-05:00'"); String fechaE = fechaHoyFormat.format(fechaHoy);
Este método construye el Objeto Documento Electrónico
PASO 2: Construir el objeto documento electrónico
El objeto documento electrónico contiene datos del cliente, transacción, ítem, totales etc.
private void buildDocumentoElectronico(){ try { //Datos Cliente en datosTransaccion Cliente cliente = new Cliente(); cliente.setTipoClienteFE(factory.createClienteTipoClienteFE("01")); //Contribuyente cliente.setTipoContribuyente(factory.createClienteTipoContribuyente("2")); //Juridico cliente.setNumeroRUC(factory.createClienteNumeroRUC("155596713-2-2015")); cliente.setDigitoVerificadorRUC(factory.createClienteDigitoVerificadorRUC("59")); cliente.setRazonSocial(factory.createClienteRazonSocial("Ambiente de pruebas")); cliente.setCodigoUbicacion(factory.createClienteCodigoUbicacion("1-2-3")); cliente.setDireccion(factory.createClienteDireccion("Ave. La Paz ")); cliente.setCorregimiento(factory.createClienteCorregimiento("GUABITO")); cliente.setDistrito(factory.createClienteDistrito("CHANGUINOLA")); cliente.setProvincia(factory.createClienteProvincia("BOCAS DEL TORO")); cliente.setTelefono1(factory.createClienteTelefono1("9999-9999")); cliente.setCorreoElectronico1(factory.createClienteCorreoElectronico1("sucursal000@empresa.com")); cliente.setPais(factory.createClientePais("PA")); // Panamá cliente.setNroIdentificacionExtranjero(factory.createClienteNroIdentificacionExtranjero(""));// Obligatorio si tipoCliente=04 cliente.setPaisExtranjero(factory.createClientePaisExtranjero(""));// Obligatorio si tipoCliente=04 datosTransaccion.setCliente(factory.createCliente(cliente)); //Datos DatosTransaccion en documentoElectronico datosTransaccion.setNumeroDocumentoFiscal(factory.createDatosTransaccionNumeroDocumentoFiscal("7011")); datosTransaccion.setTipoEmision(factory.createDatosTransaccionTipoEmision("01")); // Uso Previo-Normal datosTransaccion.setFechaInicioContingencia(factory.createDatosTransaccionFechaInicioContingencia("")); datosTransaccion.setMotivoContingencia(factory.createDatosTransaccionMotivoContingencia("")); datosTransaccion.setTipoDocumento(factory.createDatosTransaccionTipoDocumento("01"));// Factura Operación Inter. datosTransaccion.setPuntoFacturacionFiscal(factory.createDatosTransaccionPuntoFacturacionFiscal("002")); datosTransaccion.setFechaEmision(factory.createDatosTransaccionFechaEmision(this.fechaE)); // formato 2020-11-18T11:45:13-05:00 datosTransaccion.setFechaSalida(factory.createDatosTransaccionFechaSalida("")); datosTransaccion.setNaturalezaOperacion(factory.createDatosTransaccionNaturalezaOperacion("01")); //Venta datosTransaccion.setTipoOperacion(factory.createDatosTransaccionTipoOperacion("1")); //Salida o Venta datosTransaccion.setDestinoOperacion(factory.createDatosTransaccionDestinoOperacion("1")); //Panama datosTransaccion.setFormatoCAFE(factory.createDatosTransaccionFormatoCAFE("1")); //Sin Generación CAFE datosTransaccion.setEntregaCAFE(factory.createDatosTransaccionEntregaCAFE("1")); //Sin Generación CAFE datosTransaccion.setEnvioContenedor(factory.createDatosTransaccionEnvioContenedor("1")); //Normal datosTransaccion.setProcesoGeneracion(factory.createDatosTransaccionProcesoGeneracion("1")); //Por Sistema datosTransaccion.setTipoVenta(factory.createDatosTransaccionTipoVenta("1")); // Venta de Giro datosTransaccion.setInformacionInteres(factory.createDatosTransaccionInformacionInteres("Demo para Facturacion Electronica")); //Datos DocFiscalReferenciado en datosTransaccion ListaDocsFiscalReferenciados listaDocsFiscalReferenciados = new ListaDocsFiscalReferenciados(); DocFiscalReferenciado docFiscalReferenciado = new DocFiscalReferenciado(); docFiscalReferenciado.setCufeFEReferenciada(factory.createDocFiscalReferenciadoCufeFEReferenciada("")); docFiscalReferenciado.setFechaEmisionDocFiscalReferenciado(factory.createDocFiscalReferenciadoFechaEmisionDocFiscalReferenciado("")); listaDocsFiscalReferenciados.getDocFiscalReferenciado().add(null); datosTransaccion.setListaDocsFiscalReferenciados(factory.createListaDocsFiscalReferenciados(null)); documentoElectronico.setCodigoSucursalEmisor(factory.createDocumentoElectronicoCodigoSucursalEmisor("0000")); documentoElectronico.setTipoSucursal(factory.createDocumentoElectronicoTipoSucursal("")); documentoElectronico.setDatosTransaccion(factory.createDatosTransaccion(datosTransaccion)); //Datos Item en documentoElectronico ListaItems items = new ListaItems(); item.setDescripcion(factory.createItemDescripcion("Lapiz")); item.setCodigo(factory.createItemCodigo("CA-001")); item.setUnidadMedida(factory.createItemUnidadMedida("cm")); item.setCantidad(factory.createItemCantidad("2.00")); item.setFechaFabricacion(factory.createItemFechaFabricacion("")); item.setFechaCaducidad(factory.createItemFechaCaducidad("")); item.setInfoItem(factory.createItemInfoItem("Lapiz con Goma")); item.setPrecioUnitario(factory.createItemPrecioUnitario("69.000000")); item.setPrecioUnitarioDescuento(factory.createItemPrecioUnitarioDescuento("0.00")); item.setPrecioItem(factory.createItemPrecioItem("138.00")); item.setPrecioAcarreo(factory.createItemPrecioAcarreo("1.01")); item.setPrecioSeguro(factory.createItemPrecioSeguro("12.01")); item.setValorTotal(factory.createItemValorTotal("171.72")); item.setCodigoGTIN(factory.createItemCodigoGTIN("")); item.setCantGTINCom(factory.createItemCantGTINCom("")); item.setCodigoGTINInv(factory.createItemCodigoGTINInv("")); item.setCantGTINComInv(factory.createItemCantGTINComInv("")); item.setTasaITBMS(factory.createItemTasaITBMS("03")); item.setValorITBMS(factory.createItemValorITBMS("20.70")); item.setTasaISC(factory.createItemTasaISC("")); item.setValorISC(factory.createItemValorISC("")); item.setCodigoCPBS(factory.createItemCodigoCPBS("1410")); item.setUnidadMedidaCPBS(factory.createItemUnidadMedidaCPBS("cm")); items.getItem().add(0,item); documentoElectronico.setListaItems(factory.createListaItems(items)); //Datos TotalesSubTotales en documentoElectronico TotalesSubTotales totalesSubTotales = new TotalesSubTotales(); totalesSubTotales.setNroItems( factory.createTotalesSubTotalesNroItems("1")); totalesSubTotales.setTiempoPago(factory.createTotalesSubTotalesTiempoPago("1")); totalesSubTotales.setTotalAcarreoCobrado(factory.createTotalesSubTotalesTotalAcarreoCobrado("")); totalesSubTotales.setTotalDescuento(factory.createTotalesSubTotalesTotalDescuento("0.00")); totalesSubTotales.setTotalFactura(factory.createTotalesSubTotalesTotalFactura("171.72")); totalesSubTotales.setTotalISC(factory.createTotalesSubTotalesTotalISC("")); totalesSubTotales.setTotalITBMS(factory.createTotalesSubTotalesTotalITBMS("20.70")); totalesSubTotales.setTotalMontoGravado(factory.createTotalesSubTotalesTotalMontoGravado("20.70")); totalesSubTotales.setTotalPrecioNeto(factory.createTotalesSubTotalesTotalPrecioNeto("138.00")); totalesSubTotales.setTotalValorRecibido(factory.createTotalesSubTotalesTotalValorRecibido("171.72")); totalesSubTotales.setVuelto(factory.createTotalesSubTotalesVuelto("0.00")); totalesSubTotales.setValorSeguroCobrado(factory.createTotalesSubTotalesValorSeguroCobrado("")); totalesSubTotales.setTotalTodosItems(factory.createTotalesSubTotalesTotalTodosItems("171.72")); //Datos Entrada formaPago en totalesSubTotales FormaPago formaPago = new FormaPago(); ListaFormaPago listaFormaPago = new ListaFormaPago(); formaPago.setFormaPagoFact(factory.createFormaPagoFormaPagoFact("01")); // Credito formaPago.setValorCuotaPagada(factory.createFormaPagoValorCuotaPagada("171.72")); formaPago.setDescFormaPago(factory.createFormaPagoDescFormaPago("")); listaFormaPago.getFormaPago().add(0, formaPago); totalesSubTotales.setListaFormaPago(factory.createListaFormaPago(listaFormaPago)); //Datos Entrada retencion en totalesSubTotales Retencion retencion = new Retencion(); retencion.setCodigoRetencion(factory.createRetencionCodigoRetencion("8")); retencion.setMontoRetencion(factory.createRetencionMontoRetencion("1.00")); totalesSubTotales.setRetencion(factory.createRetencion(retencion)); documentoElectronico.setTotalesSubTotales(factory.createTotalesSubTotales(totalesSubTotales)); } catch (Exception e) { System.out.println("Exception :"+e.toString()); } }