meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
lenguaje_java [2021/06/15 01:59]
jsojo
lenguaje_java [2022/08/29 19:34] (actual)
lmartinez
Línea 26: Línea 26:
          
 } }
 +</code>
 +
 +<code ->
 +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;
 +</code>
 +
 +===== PASO 1: Configurar la ruta de nuestro servicio web y tokens de prueba =====
 +
 +Cuenta demo para hacer pruebas
 +
 +LINK: [[https://demointegracion.ebi-pac.com/ws/obj/v1.0/Service.svc?singleWsdl]]
 +
 +Usuario: %%“SOLICITAR”;%%
 +
 +Password: %%“SOLICITAR”;%%
 +
 +<code ->
 +  public class EnviarDocumentoElectronico {
 +
 +
 +    // Se instancia los objetos utilizados
 +
 +    String wsdl = "https://demointegracion.ebi-pac.com/ws/obj/v1.0/Service.svc?singleWsdl";
 +
 +    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);
 +</code>
 +
 +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.
 +
 +<code ->
 +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());
 +
 +        }
 +
 +    
 +
 +    }
 +</code>
 +
 +===== PASO 3: Enviar el objeto documento electronico =====
 +
 +Este Método permite enviar al servicio web el objeto documentoElectronico mediante el método enviar() parámetros :tokenEmpresa, tokenPassword, documentoElectronico y se obtiene como respuesta código, mensaje y respuesta del envío.
 +
 +<code ->
 +public  EnviarDocumentoElectronico () {
 +
 +        EnviarResponse enviarResponse;
 +
 +        try { 
 +
 +            bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, wsdl);
 +
 +            //Se Construye el objeto DocumentoElectronico 
 +
 +            buildDocumentoElectronico(); 
 +
 +            //Se envía DocumentoElectronico 
 +
 +            System.out.println("Enviando Documento Fiscal: "+datosTransaccion.getNumeroDocumentoFiscal().getValue());
 +
 +            //return port.enviar(tokenEmpresa, tokenPassword, documento);
 +
 +            enviarResponse = port.enviar(tokenEmpresa, tokenPassword, documentoElectronico);
 +</code>
 +
 +===== PASO 4: Obtener la respuesta de nuestro servicio web =====
 +
 +Recibirás una respuesta de nuestro servicio web, Se mostrara el código recibido con el mensaje y el código qr.
 +
 +<code ->
 +// Respuesta
 +            System.out.println("Respuesta: "+enviarResponse.getCodigo().getValue()+" - "+enviarResponse.getMensaje().getValue());
 +            System.out.println("Cufe: "+enviarResponse.getCufe().getValue());
 + 
 +            // link
 +            URL url = new URL(enviarResponse.getQr().getValue());
 +            System.out.println(url.toURI());
 +            //Desktop.getDesktop().browse(url.toURI());
 +            
 +        }
 +        catch (MalformedURLException | URISyntaxException e) {
 +              System.out.println("Exception :"+e.toString());
 +        }
 +    }
 +  
 </code> </code>