la primera subida a produccion

This commit is contained in:
cruales 2022-11-02 19:45:05 -05:00
parent 1ccba14eb3
commit ad666ad3e0
129 changed files with 708 additions and 656 deletions

View File

@ -28,7 +28,7 @@ public class EstadoSolicitudQuery extends QueryRule{
}
StringBuilder sql = new StringBuilder("select DISTINCT ta.ACTIVITYNAME,ta.USERCODE,ta.GROUPCODE,tk.STATUS,ta.CREATED,ta.STARTED,ta.COMPLETED "
+ " from jbpm6.VARIABLEINSTANCELOG d, TBPMACTIVITIES ta, jbpm6.TASK tk "
+ " from jbpm6.public.VARIABLEINSTANCELOG d, TBPMACTIVITIES ta, jbpm6.public.TASK tk "
+ " where d.processInstanceId = ta.internalcode and tk.id (+) = ta.TASKID ");
if(codigosolicitud.contains("SOL") || codigosolicitud.contains("TRA")){

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:16 ECT 2022
#Wed Nov 02 15:37:09 ECT 2022
version=2.1
groupId=com.fp.base.bpm
artifactId=bpmlib

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:10 ECT 2022
#Wed Nov 02 15:37:03 ECT 2022
version=2.1
groupId=com.fp.base.bpm
artifactId=simple

View File

@ -326,11 +326,10 @@ public class ScheduleXMLSolicitud {
@Schedule( hour = "*",second = "0", minute = "1,10,20,30,40,50", persistent = false)
public void generarXMLs() {
try {
EntityManager entityManager = emf.createEntityManager();
TgeneParameters ejecucion = obtenerParametro("PATHFACTURASXML", entityManager);
TgeneParameters ejecucion = obtenerParametro("EJECUCIONXML", entityManager);
if(ejecucion.getNumbervalue().compareTo(BigDecimal.ZERO) == 0){
throw new Exception(new Date().toString().concat(": Ejecucion de la facturacion desactivada"));
@ -352,7 +351,7 @@ public class ScheduleXMLSolicitud {
+ "LEFT JOIN TCUSTPERSONDETAIL p \n"
+ "ON t.PERSONCODE = p.PERSONCODE \n"
+ "AND p.DATETO = TO_DATE('2999-12-31','YYYY-MM-DD') \n"
+ "WHERE t2.ESTADOTRAMITE = 'APB' and\n"
+ "WHERE t2.ESTADOTRAMITE = 'APBDEP' and\n"
+ "t2.valorapagar is not null and t2.valorapagar > 0\n"
+ "limit 105 \n"

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:43 ECT 2022
#Wed Nov 02 15:37:29 ECT 2022
version=2.1
groupId=com.fp.base.business
artifactId=armas

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:35 ECT 2022
#Wed Nov 02 15:37:23 ECT 2022
version=2.1
groupId=com.fp.base.business
artifactId=general

Binary file not shown.

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:38 ECT 2022
#Wed Nov 02 15:37:25 ECT 2022
version=2.1
groupId=com.fp.base.business
artifactId=log

View File

@ -209,6 +209,7 @@ public abstract class CompletePersonAndCompany extends TransactionRule {
tcustBalanceKey.setPersoncode(personcode);
tcustBalanceKey.setBalancedate(balancedate);
TcustBalance tcustBalance = new TcustBalance(tcustBalanceKey);
PersistenceHelper.save(tcustBalance);
// saveRequest.putSaveBean("TCUSTBALANCE", tcustBalance, 1);
}

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:30 ECT 2022
#Wed Nov 02 15:37:20 ECT 2022
version=2.1
groupId=com.fp.base.business
artifactId=person

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:36 ECT 2022
#Wed Nov 02 15:37:24 ECT 2022
version=2.1
groupId=com.fp.base.business
artifactId=report

View File

@ -73,8 +73,8 @@ public class MailMasivo {
}
/** Sentencia que entrega las solicitudes a enviar mail. */
private static final String JPQL = " select cod_solicitud, cod_tipo, ((trunc(select now()) - fec_fin_viatico)) + 1 dias "
+ "from via_solicitud where (trunc(select now()) - fec_fin_viatico) + 1 between 1 and 4 and cod_estado in ('SAP','IPI') ant tipo = 'SOL' ";
private static final String JPQL = " select cod_solicitud, cod_tipo, extract(day from(now() - fec_fin_viatico)) + 1 dias "
+ "from via_solicitud where extract(day from(select now() - fec_fin_viatico))+ 1 between 1 and 4 and cod_estado in ('SAP','IPI') ant tipo = 'SOL' ";
/**
* Metodo que obtiene las solicitudes a enviar mail masivos.

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:40 ECT 2022
#Wed Nov 02 15:37:26 ECT 2022
version=2.1
groupId=com.fp.base.business
artifactId=viaticos

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:26 ECT 2022
#Wed Nov 02 15:37:17 ECT 2022
version=2.1
groupId=com.fp.base.core
artifactId=alfresco-client

Binary file not shown.

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:11 ECT 2022
#Wed Nov 02 15:37:05 ECT 2022
version=2.1
groupId=com.fp.base.core
artifactId=bpm

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:25 ECT 2022
#Wed Nov 02 15:37:16 ECT 2022
version=2.1
groupId=com.fp.base.core
artifactId=firmas

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 15:59:54 ECT 2022
#Wed Nov 02 15:36:50 ECT 2022
version=2.1
groupId=com.fp.base.dto
artifactId=common

Binary file not shown.

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 15:59:51 ECT 2022
#Wed Nov 02 15:36:48 ECT 2022
version=2.1
groupId=com.fp.base.dto
artifactId=dto

View File

@ -30,9 +30,9 @@ public class SaveBean extends BeanHelper implements FacadeBeanJsfRemote {
EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal();
PersistenceHelper.setEntityManager(em);
try {
BeanHelper.cleanThreadLocal();
BeanHelper.cleanThreadLocal();
PersistenceHelper.beginTransaction();
SaveAction sa = new SaveAction();
SaveAction sa = new SaveAction();
resp = sa.process(request);
PersistenceHelper.commitTransaction();
return resp;

Binary file not shown.

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:45 ECT 2022
#Wed Nov 02 15:37:31 ECT 2022
version=2.1
groupId=com.fp.base
artifactId=facade

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:44 ECT 2022
#Wed Nov 02 15:37:30 ECT 2022
version=2.1
groupId=com.fp.base
artifactId=facadeclient

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:04 ECT 2022
#Wed Nov 02 15:36:59 ECT 2022
version=2.1
groupId=com.fp.base.persistence
artifactId=commondb

View File

@ -10,10 +10,12 @@ import java.io.Serializable;
import java.lang.reflect.Field;
import java.sql.Timestamp;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
@ -40,12 +42,15 @@ public class TarmInvoiceHistory extends com.fp.dto.AbstractDataTransport impleme
* Clave primaria de la Entidad TarmInvoiceHistory
*/
@Id
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "ID")
private Integer pk;
/**
* Codigo usuario
*/
@Column(name = "USERCODE", nullable = true)
@Basic(optional = false)
@Column(name = "USERCODE")
private String usercode;
/**
* Fecha de generacion de la factura
@ -89,14 +94,6 @@ public class TarmInvoiceHistory extends com.fp.dto.AbstractDataTransport impleme
/**
* Getters y setters
*/
public int getHashValue() {
return hashValue;
}
public void setHashValue(int hashValue) {
this.hashValue = hashValue;
}
public Integer getPk() {
return pk;
}

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:23 ECT 2022
#Wed Nov 02 15:37:15 ECT 2022
version=2.1
groupId=com.fp.base.persistence
artifactId=parmas

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 15:59:56 ECT 2022
#Wed Nov 02 15:36:51 ECT 2022
version=2.1
groupId=com.fp.base.persistence
artifactId=pbpm

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:07 ECT 2022
#Wed Nov 02 15:37:01 ECT 2022
version=2.1
groupId=com.fp.base.persistence
artifactId=pcustomer

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:20 ECT 2022
#Wed Nov 02 15:37:12 ECT 2022
version=2.1
groupId=com.fp.base.persistence
artifactId=pfirmas

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:02 ECT 2022
#Wed Nov 02 15:36:57 ECT 2022
version=2.1
groupId=com.fp.base.persistence
artifactId=pgeneral

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:17 ECT 2022
#Wed Nov 02 15:37:10 ECT 2022
version=2.1
groupId=com.fp.base.persistence
artifactId=plog

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:19 ECT 2022
#Wed Nov 02 15:37:11 ECT 2022
version=2.1
groupId=com.fp.base.persistence
artifactId=pviaticos

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:09 ECT 2022
#Wed Nov 02 15:37:02 ECT 2022
version=2.1
groupId=com.fp.base.persistence
artifactId=util

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:28 ECT 2022
#Wed Nov 02 15:37:18 ECT 2022
version=2.1
groupId=com.fp.base
artifactId=sessionbeans

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:46 ECT 2022
#Wed Nov 02 15:37:32 ECT 2022
version=2.1
groupId=com.fp.clients.maia
artifactId=maiaear

View File

@ -1,5 +1,5 @@
#Generated by Maven
#Mon Oct 31 16:00:45 ECT 2022
#Wed Nov 02 15:37:31 ECT 2022
version=2.1
groupId=com.fp.clients.maia
artifactId=environment-eap6

View File

@ -0,0 +1,441 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package com.fp.frontend.controller.armas.solicitud;
import com.fp.dto.AbstractDataTransport;
import com.fp.frontend.controller.AbstractController;
import com.fp.frontend.controller.armas.parametros.CentroControlArmasController;
import com.fp.frontend.controller.pcustomer.PersonAddressController;
import com.fp.frontend.controller.pcustomer.PersonDetailController;
import com.fp.frontend.controller.pcustomer.PersonPhoneController;
import com.fp.frontend.controller.pgeneral.gene.CityController;
import com.fp.frontend.controller.pgeneral.gene.ParametersController;
import static com.fp.frontend.controller.pgeneral.gene.ParametersController.find;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.parmas.param.TarmCentroControl;
import com.fp.persistence.parmas.param.TarmTramite;
import com.fp.persistence.parmas.soli.TarmInvoiceHistory;
import com.fp.persistence.parmas.soli.TarmSolicitud;
import com.fp.persistence.parmas.soli.TarmSolicitudTramite;
import com.fp.persistence.pcustomer.gene.TcustPersonAddress;
import com.fp.persistence.pcustomer.gene.TcustPersonDetail;
import com.fp.persistence.pcustomer.gene.TcustPersonPhone;
import com.fp.persistence.pgeneral.gene.TgeneCity;
import com.fp.persistence.pgeneral.gene.TgeneParameters;
import com.fp.persistence.pgeneral.safe.TsafeUserDetail;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.openide.util.Exceptions;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* CLASE PARA GENERACION DE XML
* @author developer2
*/
@ManagedBean
@ViewScoped
public class FacturaController extends AbstractController<AbstractDataTransport>{
private static final long serialVersionUID = -4049698904561227471L;
public FacturaController() throws Exception{
super(AbstractDataTransport.class);
}
@ManagedProperty(value = "#{iv}")
private InvoiceHistoryController iv;
@PostConstruct
public void postConstruct(){
}
/**
*Codigo de GENERACION DE XML DE FACTURAS
*/
public void crearAgregarHijo(Document doc, Element padre, String nombreElemento, String textoElemento) {
Element hijo = crearElemento(doc, nombreElemento, textoElemento);
agregarHijoPadre(doc, padre, hijo);
}
public void crearAtributo(Document doc, Element elemento, String nombreAtributo, String valorAtributo) {
Attr attr = doc.createAttribute(nombreAtributo);
attr.setValue(valorAtributo);
elemento.setAttributeNode(attr);
}
public void crearAgregarHijoAtributo(Document doc, Element padre, String nombreElemento, String textoElemento, String nombreAtributo, String textoAtributo) {
Element hijo = crearElemento(doc, nombreElemento, textoElemento);
crearAtributo(doc, hijo, nombreAtributo, textoAtributo);
agregarHijoPadre(doc, padre, hijo);
}
public Element crearElemento(Document doc, String nombreElemento, String textoElemento) {
Element elemento1 = doc.createElement(nombreElemento);
elemento1.setTextContent(textoElemento);
return elemento1;
}
public Element crearElementoSinTexto(Document doc, String nombreElemento) {
Element elemento1 = doc.createElement(nombreElemento);
return elemento1;
}
public void agregarHijoPadre(Document doc, Element padre, Element hijo) {
padre.appendChild(hijo);
}
/**
*ACTUALIZAR SECUENCIA DE CENTRO DE CONTROL
*/
public void actualizarSecuenciaCcontrol(TarmCentroControl centroControl, CentroControlArmasController cac) throws Exception{
centroControl.setSecuenciafacturacion(centroControl.getSecuenciafacturacion()+1);
cac.update(centroControl);
cac.save();
}
/**
*Buscar direccion de la persona si es la principal (Y)
*/
public TcustPersonAddress setDireccionPrincipal(TcustPersonAddress direccion, List<TcustPersonAddress> lstdireccionDomicilio){
if (lstdireccionDomicilio != null && !lstdireccionDomicilio.isEmpty()) {
for (TcustPersonAddress tcustPersonAddress : lstdireccionDomicilio) {
if (tcustPersonAddress.getPrincipal().equalsIgnoreCase("Y")) {
direccion = tcustPersonAddress;
break;
}
}
}
return direccion;
}
/**
* Buscar el telefono mas principal segun el numero secuencial establecido en addresNumber
*/
public TcustPersonPhone buscarTelefonoPrincipal(List<TcustPersonPhone> lstTelefonos){
int masBajo = 0;
Integer index = null;
if (lstTelefonos != null && !lstTelefonos.isEmpty()) {
for (int j = 0; j < lstTelefonos.size(); j++) {
if (j == 0) {
masBajo = lstTelefonos.get(j).getAddressnumber();
index = j;
} else {
if (lstTelefonos.get(j).getAddressnumber() < masBajo) {
masBajo = lstTelefonos.get(j).getAddressnumber();
index = j;
}
}
}
}
return lstTelefonos.get(index) ;
}
/**
* Generar el detalle 1 de la factura
*/
public void generarDetalle1(Document doc, Element detalle1, String codigoPrincipal, String descripcion, Integer cantidad, Double precioUnitario, Double precioTotalSinImpuestos){
crearAgregarHijo(doc, detalle1, "codigoPrincipal", codigoPrincipal);
crearAgregarHijo(doc, detalle1, "descripcion", descripcion);
crearAgregarHijo(doc, detalle1, "cantidad", cantidad + "");
crearAgregarHijo(doc, detalle1, "precioUnitario", precioUnitario.toString());
crearAgregarHijo(doc, detalle1, "descuento", "0.00");
crearAgregarHijo(doc, detalle1, "precioTotalSinImpuesto", precioTotalSinImpuestos.toString());
}
/**
*Generar el detalle de los custodios
*/
public void generarCustodio(Document doc, TgeneParameters tCustodio, TarmSolicitud solicitud, TarmSolicitudTramite solicitudTramite, String impuesto, Integer porcentajeDescuento, Element detalles ){
Element detalle2 = crearElementoSinTexto(doc, "detalle");
String codigoPrincipal2 = tCustodio.getNumbervalue().toString().contains(".")
? tCustodio.getNumbervalue().toString().split("\\.")[0] : tCustodio.getNumbervalue().toString() ; int numeroDias = solicitud != null && solicitud.getNumerodiascustodios() != null ? solicitud.getNumerodiascustodios() : null;
int numeroCustodios=solicitud != null ? solicitud.getNumerocustodios() : null;
String descripcion2 = String.format(tCustodio.getTextvalue(), numeroDias);
Double precioUnitario2 = solicitudTramite.getValorcustodios().doubleValue()/ numeroCustodios;
Double precioTotalSinImpuestos2 = solicitudTramite.getValorcustodios().doubleValue() ;
crearAgregarHijo(doc, detalle2, "codigoPrincipal", codigoPrincipal2);
crearAgregarHijo(doc, detalle2, "descripcion", descripcion2);
crearAgregarHijo(doc, detalle2, "cantidad", numeroCustodios + "");
crearAgregarHijo(doc, detalle2, "precioUnitario", precioUnitario2.toString());
crearAgregarHijo(doc, detalle2, "descuento", "0.00");
crearAgregarHijo(doc, detalle2, "precioTotalSinImpuesto", precioTotalSinImpuestos2.toString());
Element impuestoItem2 = crearElementoSinTexto(doc, "impuestoItem");
Element impueste2 = crearElementoSinTexto(doc, "impuesto");
crearAgregarHijo(doc, impueste2, "impuesto", impuesto);
crearAgregarHijo(doc, impueste2, "Porcentaje", porcentajeDescuento + "");
crearAgregarHijo(doc, impueste2, "baseImponible", precioTotalSinImpuestos2.toString());
agregarHijoPadre(doc, impuestoItem2, impueste2);
agregarHijoPadre(doc, detalle2, impuestoItem2);
agregarHijoPadre(doc, detalles, detalle2);
}
public File sacarFactura(String codigoSolicitud, File carpetaBase, TsafeUserDetail tsafeUserDetail) throws Exception {
CentroControlArmasController cac = new CentroControlArmasController();
TgeneParameters tCustodio = find("CUSTODIOSFACTURA", "1");
String noDisponible = ""; /**SE SUELE UTILIZAR SI ES QUE SE REQUIERE UN MENSAJE EN DATOS VACIOS*/
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
//Elemento raíz
Document doc = docBuilder.newDocument();
Element factura = doc.createElement("factura");
doc.appendChild(factura);
TarmSolicitudTramite solicitudTramite = SolicitudTramiteController.findByCSolicitud(codigoSolicitud);
TarmSolicitud solicitud = SolicitudController.findSolicitudxcodsolicitud(codigoSolicitud);
Integer personCode = solicitud.getPersoncode();
TcustPersonDetail persona = PersonDetailController.find(personCode.toString());
TgeneParameters parametroRUC = find("RUCCOMACO", "1");
TarmTramite tTramite = TarmTramiteController.findSimple(solicitud.getCtramite().toString());
String rucComaco = parametroRUC.getTextvalue();
crearAgregarHijo(doc, factura, "ruc", rucComaco);
TarmCentroControl centroControl = CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol());
String serie = centroControl != null && centroControl.getPuntofacturacion() != null ?
centroControl.getPuntofacturacion().replace("-", "") : "";
crearAgregarHijo(doc, factura, "secuencia",String.format("%09d", centroControl.getSecuenciafacturacion()));
/**
* ACTUALIZAR LA SECUENCIA DEL CENTRO DE CONTROL
*/
actualizarSecuenciaCcontrol(centroControl, cac);
crearAgregarHijo(doc, factura, "serie", serie);
//Fecha de emision
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
String fechaEmision = sdf.format(Calendar.getInstance().getTime());
crearAgregarHijo(doc, factura, "fecha", fechaEmision);
/**
* ============================= DATOS DE PERSONA
*/
crearAgregarHijo(doc, factura, "tipoIdComprador", persona.getIdentificationcatalog());
crearAgregarHijo(doc, factura, "razonSocialComprador", persona.getName());
crearAgregarHijo(doc, factura, "identificacionComprador", persona.getIdentification());
/**
* *********************** Direccion
*/
TcustPersonAddress direccionDomicilio = null;
List<TcustPersonAddress> lstdireccionDomicilio = PersonAddressController.findByPersonCodeList(personCode.toString(), "1");
direccionDomicilio = setDireccionPrincipal(direccionDomicilio, lstdireccionDomicilio);
List<TcustPersonAddress> lstCorreos = PersonAddressController.findByPersonCodeList(personCode.toString(), "3");
TcustPersonAddress correo = null;
/** ====================== buscar por menor addresNumber */
correo = lstCorreos != null || !lstCorreos.isEmpty() ? lstCorreos.get(0) : null;
TcustPersonPhone telefono = null;
List<TcustPersonPhone> lstTelefonos = PersonPhoneController.findAll(personCode.toString(), "1");
telefono = buscarTelefonoPrincipal(lstTelefonos);
PersonPhoneController.find(personCode.toString(), "1");
Double valorAPagar = solicitudTramite.getValorapagar().doubleValue();
crearAgregarHijo(doc, factura, "direccionComprador", direccionDomicilio != null ? direccionDomicilio.getAddress() : noDisponible);
crearAgregarHijo(doc, factura, "totalSinImpuestos", valorAPagar.toString());
crearAgregarHijo(doc, factura, "totalDescuento", "0.00");
/**
* ================== impuestoTotal ================
*/
String impuesto = "IVA";
int porcentajeDescuento = 0;
Element impuestoTotal = crearElementoSinTexto(doc, "impuestoTotal");
Element totalImpuesto1 = crearElementoSinTexto(doc, "totalImpuesto");
Element totalImpuesto2 = crearElementoSinTexto(doc, "totalImpuesto");
crearAgregarHijo(doc, totalImpuesto1, "codigo", impuesto);
crearAgregarHijo(doc, totalImpuesto1, "Porcentaje", porcentajeDescuento + "");
crearAgregarHijo(doc, totalImpuesto1, "baseImponible", valorAPagar.toString());
crearAgregarHijo(doc, totalImpuesto2, "baseImponible", impuesto);
crearAgregarHijo(doc, totalImpuesto2, "Porcentaje", "12");
crearAgregarHijo(doc, totalImpuesto2, "baseImponible", "0.00");
agregarHijoPadre(doc, impuestoTotal, totalImpuesto1);
agregarHijoPadre(doc, impuestoTotal, totalImpuesto2);
agregarHijoPadre(doc, factura, impuestoTotal);
crearAgregarHijo(doc, factura, "totalFactura", valorAPagar.toString());
/**
* ========================= Detalles ================================
*/
String []servicios = tTramite.getServicio() != null ? tTramite.getServicio().split("-"):null;
String codigoPrincipal = servicios != null ? servicios[0]: ""; /**IMPORTANTE REVISAR*/
String descripcion = servicios != null ? servicios[1]: "";
int cantidad = 1; /**Cantidad de productos en solicitud*/
Double precioUnitario = solicitudTramite.getValortramitearmas().doubleValue();
Double precioTotalSinImpuestos = precioUnitario * cantidad;
Element detalles = crearElementoSinTexto(doc, "detalles");
Element detalle1 = crearElementoSinTexto(doc, "detalle");
generarDetalle1(doc, detalle1, codigoPrincipal, descripcion, cantidad, precioUnitario, precioTotalSinImpuestos);
Element impuestoItem = crearElementoSinTexto(doc, "impuestoItem");
Element impueste = crearElementoSinTexto(doc, "impuesto");
crearAgregarHijo(doc, impueste, "impuesto", impuesto);
crearAgregarHijo(doc, impueste, "Porcentaje", porcentajeDescuento + "");
crearAgregarHijo(doc, impueste, "baseImponible", precioTotalSinImpuestos + "");
agregarHijoPadre(doc, impuestoItem, impueste);
agregarHijoPadre(doc, detalle1, impuestoItem);
agregarHijoPadre(doc, detalles, detalle1);
/**
* **** custodios
*/
if (solicitudTramite.getValorcustodios() != null && solicitudTramite.getValorcustodios().doubleValue() > 0) {
generarCustodio(doc, tCustodio, solicitud, solicitudTramite, impuesto, porcentajeDescuento, detalles);
}
agregarHijoPadre(doc, factura, detalles);
/**
* ========================= Pagos ================================
*/
Element pagos = crearElementoSinTexto(doc, "pagos");
Element pago = crearElementoSinTexto(doc, "pago");
/**
* formaPago: de momento, tocaria ver los nemonicos a futuro para pago con tarjeta
*/
String formaPago = "EF";
Double totalPagar = valorAPagar;
crearAgregarHijo(doc, pago, "formaPago", formaPago);
crearAgregarHijo(doc, pago, "total", totalPagar.toString());
agregarHijoPadre(doc, pagos, pago);
agregarHijoPadre(doc, factura, pagos);
/**
* ========================= INFOAdicional ========================
*/
String mail = correo != null ? correo.getAddress() : noDisponible;
String telefonoFijo = telefono != null ? telefono.getPhonenumber() : noDisponible;
if (telefonoFijo.contains("-")) {
telefonoFijo = telefonoFijo.split("-")[1];
}
TgeneCity Tciudad = null;
if (direccionDomicilio != null) {
Tciudad = CityController.findOnlyOne(direccionDomicilio.getCountrycode(),
direccionDomicilio.getProvincecode(), direccionDomicilio.getCantoncode(), direccionDomicilio.getCitycode());
}
String ciudad = Tciudad != null ? Tciudad.getDescription() : noDisponible;
Element infoAdicional = crearElementoSinTexto(doc, "infoAdicional");
crearAgregarHijoAtributo(doc, infoAdicional, "campoAdicional", mail, "nombre", "Mail");
crearAgregarHijoAtributo(doc, infoAdicional, "campoAdicional", telefonoFijo, "nombre", "Telefono");
crearAgregarHijoAtributo(doc, infoAdicional, "campoAdicional", ciudad, "nombre", "Ciudad");
agregarHijoPadre(doc, factura, infoAdicional);
//Se escribe el contenido del XML en un archivo
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
File archivo = new File(carpetaBase, String.format("%s.xml", solicitud.getNumerosolicitud()));
StreamResult result = new StreamResult(archivo);
transformer.transform(source, result);
try {
crearAuditoria(solicitud.getPk(), tsafeUserDetail.getPk().getUsercode(),
solicitud.getNumerosolicitud(), solicitudTramite.getNumerotramite(),
archivo.getAbsolutePath());
} catch (Exception e) {
e.printStackTrace();
//System.out.println("Error al generar auditoria desde el front>>< "+ e.toString());
}
return archivo;
}
public String obtenerContenidoArchivo(String archivo) throws FileNotFoundException, IOException {
StringBuilder sb = new StringBuilder();
FileReader f = new FileReader(archivo);
String cadena;
BufferedReader b = new BufferedReader(f);
while((cadena = b.readLine())!=null) {
sb.append(cadena.concat("\n"));
}
b.close();
return sb.toString();
}
public void crearAuditoria( String csoli,String user, String solicitudNumber, String tramiteNumber,String path) throws Exception{
TarmInvoiceHistory tih = new TarmInvoiceHistory();
iv = new InvoiceHistoryController();
tih.setCsolicitud(csoli);
tih.setUsercode(user);
tih.setRegistrationdate(new java.sql.Timestamp(Calendar.getInstance().getTimeInMillis()));
tih.setSolicitudnumber(solicitudNumber);
tih.setTramitenumber(tramiteNumber);
tih.setPathfile(path);
tih.setContentfile(obtenerContenidoArchivo(path));
//PersistenceHelper.getEntityManager().persist(tih);
System.out.println("com.fp.frontend.controller.armas.solicitud.FacturaController.crearAuditoria()<>> va a gualdal" );
iv.update(tih);
//PersistenceHelper.getEntityManager().crea
//PersistenceHelper.save(tih);
iv.save();
System.out.println("com.fp.frontend.controller.armas.solicitud.FacturaController.crearAuditoria()<>> devio avel gualdado" );
}
public void generarFacturas(String csolicitud) {
try {
TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL");
String folderPath = find("PATHFACTURASXML", "1").getTextvalue();
folderPath = folderPath.concat("FRONTEND").concat("/");
File carpetaBase = new File(folderPath);
carpetaBase.mkdirs();
File arch = sacarFactura(csolicitud, carpetaBase, tsafeUserDetail );
byte[] fileContent = Files.readAllBytes(Paths.get(arch.getAbsolutePath()));
this.downloadFile(fileContent, "application/xml", arch.getName());
} catch (Exception ex) {
System.out.println("Error al guardar el parametro >>>> " + ex.toString());
Exceptions.printStackTrace(ex);
}
}
@Override
protected void querydatabase() {
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
}
}

View File

@ -23,10 +23,11 @@ import javax.faces.bean.ViewScoped;
*
* @author developer2
*/
@SuppressWarnings("serial")
@ManagedBean
@ViewScoped
public class InvoiceHistoryController extends AbstractController<TarmInvoiceHistory>{
private static final long serialVersionUID = 1L;
public InvoiceHistoryController() throws Exception {
super(TarmInvoiceHistory.class);
}
@ -49,14 +50,10 @@ public class InvoiceHistoryController extends AbstractController<TarmInvoiceHist
}
}
public void update(TarmInvoiceHistory bean) {
try {
public void update(TarmInvoiceHistory bean) throws Exception {
this.record = bean;
super.update();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
@ -77,12 +74,12 @@ public class InvoiceHistoryController extends AbstractController<TarmInvoiceHist
this.postCommit(resp);
//MessageHelper.setMessageInfo(resp);
} else {
System.out.println("Error al guardar");
System.out.println("Error al guardar "+resp.getResponseTechnicalMessage());
// MessageHelper.setMessageError(resp);
}
} catch (Throwable e) {
MessageHelper.setMessageError(e);
System.out.println("Error guardando historial de xml desde frontent: "+e.toString());
}
}
@Override

View File

@ -39,7 +39,7 @@ import com.fp.frontend.controller.pgeneral.gene.ParametersController;
import com.fp.frontend.controller.pgeneral.gene.ParroquiaController;
import com.fp.frontend.controller.pgeneral.gene.ProvinceController;
import com.fp.frontend.controller.pgeneral.safe.UserDetailController;
import com.fp.frontend.controller.pcustomer.FacturaController;
import com.fp.frontend.controller.armas.solicitud.FacturaController;
import com.fp.frontend.helper.MessageHelper;
import com.fp.frontend.utility.MsgControlArmas;
import com.fp.frontend.utility.Utilidades;
@ -160,8 +160,7 @@ public class ReporteConsultaSolicitudController extends
private SolicitudArmasController solicitud;
@ManagedProperty(value = "#{parametersController}")
private ParametersController parametersController;
private FacturaController facturaController;
/**
* Controlador que maneja la persona
*/
@ -300,12 +299,24 @@ public class ReporteConsultaSolicitudController extends
private void init() {
this.beanalias = "REPORTESOLICITUD";
initFacturaController();
ltipopersona = CatalogDetailController.find("PERSONTYPE");
ltipoidenti = CatalogDetailController.find("IDENTIFICATION");
ltipotramite = CatalogDetailController.find("TIPOTRAMITE");
lorigenadquisicion = CatalogDetailController.find("ORIGENADQUISICION");
}
/**
* Incializar facturaCOntroller
*/
public void initFacturaController(){
try {
facturaController = new FacturaController();
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
}
}
@Override
protected void querydatabase() {
// TODO Auto-generated method stub
@ -361,7 +372,7 @@ public class ReporteConsultaSolicitudController extends
public void crearXML(){
try {
this.parametersController.generarFacturas(this.solicitud.getRecord().getPk());
this.facturaController.generarFacturas(this.solicitud.getRecord().getPk());
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
@ -834,12 +845,12 @@ public class ReporteConsultaSolicitudController extends
this.solicitudGuardias = solicitudGuardias;
}
public ParametersController getParametersController() {
return parametersController;
public FacturaController getParametersController() {
return facturaController;
}
public void setParametersController(ParametersController parametersController) {
this.parametersController = parametersController;
public void setParametersController(FacturaController parametersController) {
this.facturaController = parametersController;
}

View File

@ -209,9 +209,7 @@ public class VerificacionRequisitosSolicitudController extends AbstractControlle
try {
super.startQuery();
fechaAtencionTramite = new Date(new java.util.Date().getTime());
/** IMPORTANTE BORRAR SACAR TAMBIEN LA VENTANA DE CLIENTE*/
codigoSolicitud = this.getMfilters().get("codigoSolicitud")
!= null ?this.getMfilters().get("codigoSolicitud") : "4290";
codigoSolicitud = this.getMfilters().get("codigoSolicitud");
int numArmasInt = TarmSolicitudArmasController.getNumeroArmasPorSolicitud(codigoSolicitud);

View File

@ -13,54 +13,9 @@ import com.fp.dto.Response;
import com.fp.dto.query.DtoQuery;
import com.fp.dto.save.DtoSave;
import com.fp.frontend.controller.AbstractController;
import com.fp.frontend.controller.armas.parametros.CentroControlArmasController;
import com.fp.frontend.controller.armas.solicitud.SolicitudController;
import com.fp.frontend.controller.armas.solicitud.SolicitudTramiteController;
import com.fp.frontend.controller.armas.solicitud.TarmTramiteController;
import com.fp.frontend.controller.pcustomer.PersonAddressController;
import com.fp.frontend.controller.pcustomer.PersonDetailController;
import com.fp.frontend.controller.pcustomer.PersonPhoneController;
import com.fp.frontend.helper.MessageHelper;
import com.fp.persistence.parmas.param.TarmCentroControl;
import com.fp.persistence.parmas.param.TarmTramite;
import com.fp.persistence.parmas.soli.TarmInvoiceHistory;
import com.fp.persistence.parmas.soli.TarmSolicitud;
import com.fp.persistence.parmas.soli.TarmSolicitudTramite;
import com.fp.persistence.pcustomer.gene.TcustPersonAddress;
import com.fp.persistence.pcustomer.gene.TcustPersonDetail;
import com.fp.persistence.pcustomer.gene.TcustPersonPhone;
import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail;
import com.fp.persistence.pgeneral.gene.TgeneCity;
import com.fp.persistence.pgeneral.gene.TgeneParameters;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.openide.util.Exceptions;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import com.fp.frontend.controller.armas.solicitud.InvoiceHistoryController;
import com.fp.persistence.pgeneral.safe.TsafeUserDetail;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.sql.Timestamp;
/**
* Clase controladora del lov asociado al bean TgeneParameters.
*
@ -211,358 +166,7 @@ public class ParametersController extends AbstractController<TgeneParameters> {
/** =================================== vamo a intentar generar la factura =============*/
public void crearAgregarHijo(Document doc, Element padre, String nombreElemento, String textoElemento) {
Element hijo = crearElemento(doc, nombreElemento, textoElemento);
agregarHijoPadre(doc, padre, hijo);
}
public void crearAtributo(Document doc, Element elemento, String nombreAtributo, String valorAtributo) {
Attr attr = doc.createAttribute(nombreAtributo);
attr.setValue(valorAtributo);
elemento.setAttributeNode(attr);
}
public void crearAgregarHijoAtributo(Document doc, Element padre, String nombreElemento, String textoElemento, String nombreAtributo, String textoAtributo) {
Element hijo = crearElemento(doc, nombreElemento, textoElemento);
crearAtributo(doc, hijo, nombreAtributo, textoAtributo);
agregarHijoPadre(doc, padre, hijo);
}
public Element crearElemento(Document doc, String nombreElemento, String textoElemento) {
Element elemento1 = doc.createElement(nombreElemento);
elemento1.setTextContent(textoElemento);
return elemento1;
}
public Element crearElementoSinTexto(Document doc, String nombreElemento) {
Element elemento1 = doc.createElement(nombreElemento);
return elemento1;
}
public void agregarHijoPadre(Document doc, Element padre, Element hijo) {
padre.appendChild(hijo);
}
public File sacarFactura(String codigoSolicitud, File carpetaBase, TsafeUserDetail tsafeUserDetail) throws Exception {
CentroControlArmasController cac = new CentroControlArmasController();
TgeneParameters tCustodio = find("CUSTODIOSFACTURA", "1");
String noDisponible = ""; /**SE SUELE UTILIZAR SI ES QUE SE REQUIERE UN MENSAJE EN DATOS VACIOS*/
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
//Elemento raíz
Document doc = docBuilder.newDocument();
Element factura = doc.createElement("factura");
doc.appendChild(factura);
TarmSolicitudTramite solicitudTramite = SolicitudTramiteController.findByCSolicitud(codigoSolicitud);
TarmSolicitud solicitud = SolicitudController.findSolicitudxcodsolicitud(codigoSolicitud);
Integer personCode = solicitud.getPersoncode();
TcustPersonDetail persona = PersonDetailController.find(personCode.toString());
TgeneParameters parametroRUC = find("RUCCOMACO", "1");
TarmTramite tTramite = TarmTramiteController.findSimple(solicitud.getCtramite().toString());
String rucComaco = parametroRUC.getTextvalue();
crearAgregarHijo(doc, factura, "ruc", rucComaco);
String ccentro = solicitud.getCcentrocontrol();
TarmCentroControl centroControl = CentroControlArmasController.findPorCodigo(ccentro);
String serie = centroControl != null && centroControl.getPuntofacturacion() != null ?
centroControl.getPuntofacturacion().replace("-", "") : "";
crearAgregarHijo(doc, factura, "secuencia",String.format("%09d", centroControl.getSecuenciafacturacion()));
/**
* ACTUALIZAR LA SECUENCIA DEL CENTRO DE CONTROL
*/
centroControl.setSecuenciafacturacion(centroControl.getSecuenciafacturacion()+1);
cac.update(centroControl);
cac.save();
crearAgregarHijo(doc, factura, "serie", serie);
//Fecha de emision
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
String fechaEmision = sdf.format(Calendar.getInstance().getTime());
crearAgregarHijo(doc, factura, "fecha", fechaEmision);
/**
* ============================= DATOS DE PERSONA
*/
String tipoDocumento = persona.getIdentificationcatalog();
String nombre = persona.getName();
String identificacion = persona.getIdentification();
crearAgregarHijo(doc, factura, "tipoIdComprador", tipoDocumento);
crearAgregarHijo(doc, factura, "razonSocialComprador", nombre);
crearAgregarHijo(doc, factura, "identificacionComprador", identificacion);
/**
* *********************** Direccion
*/
TcustPersonAddress direccionDomicilio = null;
List<TcustPersonAddress> lstdireccionDomicilio = PersonAddressController.findByPersonCodeList(personCode.toString(), "1");
/**lstdireccionDomicilio = (lstdireccionDomicilio == null || lstdireccionDomicilio.isEmpty()) ?
pac.findByPersonCodeList(personCode.toString(), "2") : lstdireccionDomicilio;*/
if (lstdireccionDomicilio != null && !lstdireccionDomicilio.isEmpty()) {
for (TcustPersonAddress tcustPersonAddress : lstdireccionDomicilio) {
if (tcustPersonAddress.getPrincipal().equalsIgnoreCase("Y")) {
direccionDomicilio = tcustPersonAddress;
break;
}
}
}
List<TcustPersonAddress> lstCorreos = PersonAddressController.findByPersonCodeList(personCode.toString(), "3");
TcustPersonAddress correo = null;
int masBajo = 0;
/** ====================== buscar por menor addresNumber */
correo = lstCorreos != null || !lstCorreos.isEmpty() ? lstCorreos.get(0) : null;
TcustPersonPhone telefono = null;
List<TcustPersonPhone> lstTelefonos = PersonPhoneController.findAll(personCode.toString(), "1");
masBajo = 0;
Integer index = null;
if (lstTelefonos != null && !lstTelefonos.isEmpty()) {
for (int j = 0; j < lstTelefonos.size(); j++) {
if (j == 0) {
masBajo = lstTelefonos.get(j).getAddressnumber();
index = j;
} else {
if (lstTelefonos.get(j).getAddressnumber() < masBajo) {
masBajo = lstTelefonos.get(j).getAddressnumber();
index = j;
}
}
}
telefono =index != null ? lstTelefonos.get(index) : null;
}
PersonPhoneController.find(personCode.toString(), "1");
Double valorAPagar = solicitudTramite.getValorapagar().doubleValue();
crearAgregarHijo(doc, factura, "direccionComprador", direccionDomicilio != null ? direccionDomicilio.getAddress() : noDisponible);
crearAgregarHijo(doc, factura, "totalSinImpuestos", valorAPagar.toString());
crearAgregarHijo(doc, factura, "totalDescuento", "0.00");
/**
* ================== impuestoTotal ================
*/
String impuesto = "IVA";
int porcentajeDescuento = 0;
Element impuestoTotal = crearElementoSinTexto(doc, "impuestoTotal");
Element totalImpuesto1 = crearElementoSinTexto(doc, "totalImpuesto");
Element totalImpuesto2 = crearElementoSinTexto(doc, "totalImpuesto");
crearAgregarHijo(doc, totalImpuesto1, "codigo", impuesto);
crearAgregarHijo(doc, totalImpuesto1, "Porcentaje", porcentajeDescuento + "");
crearAgregarHijo(doc, totalImpuesto1, "baseImponible", valorAPagar.toString());
crearAgregarHijo(doc, totalImpuesto2, "baseImponible", impuesto);
crearAgregarHijo(doc, totalImpuesto2, "Porcentaje", "12");
crearAgregarHijo(doc, totalImpuesto2, "baseImponible", "0.00");
agregarHijoPadre(doc, impuestoTotal, totalImpuesto1);
agregarHijoPadre(doc, impuestoTotal, totalImpuesto2);
agregarHijoPadre(doc, factura, impuestoTotal);
crearAgregarHijo(doc, factura, "totalFactura", valorAPagar.toString());
/**
* ========================= Detalles ================================
*/
String []servicios = tTramite.getServicio() != null ? tTramite.getServicio().split("-"):null;
String codigoPrincipal = servicios != null ? servicios[0]: ""; /**IMPORTANTE REVISAR*/
String descripcion = servicios != null ? servicios[1]: "";
int cantidad = 1; /**Cantidad de productos en solicitud*/
Double precioUnitario = solicitudTramite.getValortramitearmas().doubleValue();
Double precioTotalSinImpuestos = precioUnitario * cantidad;
Element detalles = crearElementoSinTexto(doc, "detalles");
Element detalle1 = crearElementoSinTexto(doc, "detalle");
crearAgregarHijo(doc, detalle1, "codigoPrincipal", codigoPrincipal);
crearAgregarHijo(doc, detalle1, "descripcion", descripcion);
crearAgregarHijo(doc, detalle1, "cantidad", cantidad + "");
crearAgregarHijo(doc, detalle1, "precioUnitario", precioUnitario.toString());
crearAgregarHijo(doc, detalle1, "descuento", "0.00");
crearAgregarHijo(doc, detalle1, "precioTotalSinImpuesto", precioTotalSinImpuestos.toString());
Element impuestoItem = crearElementoSinTexto(doc, "impuestoItem");
Element impueste = crearElementoSinTexto(doc, "impuesto");
crearAgregarHijo(doc, impueste, "impuesto", impuesto);
crearAgregarHijo(doc, impueste, "Porcentaje", porcentajeDescuento + "");
crearAgregarHijo(doc, impueste, "baseImponible", precioTotalSinImpuestos + "");
agregarHijoPadre(doc, impuestoItem, impueste);
agregarHijoPadre(doc, detalle1, impuestoItem);
agregarHijoPadre(doc, detalles, detalle1);
/**
* **** custodios
*/
if (solicitudTramite.getValorcustodios() != null && solicitudTramite.getValorcustodios().doubleValue() > 0) {
Element detalle2 = crearElementoSinTexto(doc, "detalle");
String codigoPrincipal2 = tCustodio.getNumbervalue().toString().contains(".")
? tCustodio.getNumbervalue().toString().split("\\.")[0] : tCustodio.getNumbervalue().toString() ; int numeroDias = solicitud != null && solicitud.getNumerodiascustodios() != null ? solicitud.getNumerodiascustodios() : null;
int numeroCustodios=solicitud != null ? solicitud.getNumerocustodios() : null;
String descripcion2 = String.format(tCustodio.getTextvalue(), numeroDias);
Double precioUnitario2 = solicitudTramite.getValorcustodios().doubleValue()/ numeroCustodios;
Double precioTotalSinImpuestos2 = solicitudTramite.getValorcustodios().doubleValue() ;
crearAgregarHijo(doc, detalle2, "codigoPrincipal", codigoPrincipal2);
crearAgregarHijo(doc, detalle2, "descripcion", descripcion2);
crearAgregarHijo(doc, detalle2, "cantidad", numeroCustodios + "");
crearAgregarHijo(doc, detalle2, "precioUnitario", precioUnitario2.toString());
crearAgregarHijo(doc, detalle2, "descuento", "0.00");
crearAgregarHijo(doc, detalle2, "precioTotalSinImpuesto", precioTotalSinImpuestos2.toString());
Element impuestoItem2 = crearElementoSinTexto(doc, "impuestoItem");
Element impueste2 = crearElementoSinTexto(doc, "impuesto");
crearAgregarHijo(doc, impueste2, "impuesto", impuesto);
crearAgregarHijo(doc, impueste2, "Porcentaje", porcentajeDescuento + "");
crearAgregarHijo(doc, impueste2, "baseImponible", precioTotalSinImpuestos2.toString());
agregarHijoPadre(doc, impuestoItem2, impueste2);
agregarHijoPadre(doc, detalle2, impuestoItem2);
agregarHijoPadre(doc, detalles, detalle2);
}
agregarHijoPadre(doc, factura, detalles);
/**
* ========================= Pagos ================================
*/
Element pagos = crearElementoSinTexto(doc, "pagos");
Element pago = crearElementoSinTexto(doc, "pago");
/**
* formaPago: de momento, tocaria ver los nemonicos a futuro para pago con tarjeta
*/
String formaPago = "EF";
Double totalPagar = valorAPagar;
crearAgregarHijo(doc, pago, "formaPago", formaPago);
crearAgregarHijo(doc, pago, "total", totalPagar.toString());
agregarHijoPadre(doc, pagos, pago);
agregarHijoPadre(doc, factura, pagos);
/**
* ========================= INFOAdicional ========================
*/
String mail = correo != null ? correo.getAddress() : noDisponible;
String telefonoFijo = telefono != null ? telefono.getPhonenumber() : noDisponible;
if (telefonoFijo.contains("-")) {
telefonoFijo = telefonoFijo.split("-")[1];
}
TgeneCity Tciudad = null;
if (direccionDomicilio != null) {
Tciudad = CityController.findOnlyOne(direccionDomicilio.getCountrycode(),
direccionDomicilio.getProvincecode(), direccionDomicilio.getCantoncode(), direccionDomicilio.getCitycode());
}
String ciudad = Tciudad != null ? Tciudad.getDescription() : noDisponible;
Element infoAdicional = crearElementoSinTexto(doc, "infoAdicional");
crearAgregarHijoAtributo(doc, infoAdicional, "campoAdicional", mail, "nombre", "Mail");
crearAgregarHijoAtributo(doc, infoAdicional, "campoAdicional", telefonoFijo, "nombre", "Telefono");
crearAgregarHijoAtributo(doc, infoAdicional, "campoAdicional", ciudad, "nombre", "Ciudad");
agregarHijoPadre(doc, factura, infoAdicional);
//Se escribe el contenido del XML en un archivo
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
File archivo = new File(carpetaBase, String.format("%s.xml", solicitud.getNumerosolicitud()));
StreamResult result = new StreamResult(archivo);
transformer.transform(source, result);
try {
crearAuditoria(solicitud.getPk(), tsafeUserDetail.getPk().getUsercode(),
solicitud.getNumerosolicitud(), solicitudTramite.getNumerotramite(),
archivo.getAbsolutePath());
} catch (Exception e) {
System.out.println("Error al generar auditoria desde el front>>< "+ e.toString());
}
return archivo;
}
public String obtenerContenidoArchivo(String archivo) throws FileNotFoundException, IOException {
StringBuilder sb = new StringBuilder();
FileReader f = new FileReader(archivo);
String cadena;
BufferedReader b = new BufferedReader(f);
while((cadena = b.readLine())!=null) {
sb.append(cadena.concat("\n"));
}
b.close();
return sb.toString();
}
public void crearAuditoria( String csoli,String user, String solicitudNumber, String tramiteNumber,String path) throws Exception{
InvoiceHistoryController iv = new InvoiceHistoryController(); /**========> NO OPTIMO, USADO PARA PRUEBAS*/
TarmInvoiceHistory tih = new TarmInvoiceHistory();
tih.setCsolicitud(csoli);
tih.setUsercode(user);
tih.setRegistrationdate(new java.sql.Timestamp(Calendar.getInstance().getTimeInMillis()));
tih.setSolicitudnumber(solicitudNumber);
tih.setTramitenumber(tramiteNumber);
tih.setPathfile(path);
tih.setContentfile(obtenerContenidoArchivo(path));
iv.setRecord(tih);
iv.save();
}
public void generarFacturas(String csolicitud) {
try {
TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL");
String folderPath = find("PATHFACTURASXML", "1").getTextvalue();
folderPath = folderPath.concat("FRONTEND").concat("/");
File carpetaBase = new File(folderPath);
carpetaBase.mkdirs();
File arch = sacarFactura(csolicitud, carpetaBase, tsafeUserDetail );
byte[] fileContent = Files.readAllBytes(Paths.get(arch.getAbsolutePath()));
downloadFile(fileContent, "application/xml", arch.getName());
} catch (Exception ex) {
System.out.println("Error al guardar el parametro >>>> " + ex.toString());
Exceptions.printStackTrace(ex);
}
}
/** ======================= COPIADO DE ABRASTRACT CONTROLLER ==================*/
public void downloadFile(byte[] fileByte, String contentType, String filename) {
try {
int read = 0;
byte[] bytes = new byte[1024];
InputStream input = new ByteArrayInputStream(fileByte);
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext external = context.getExternalContext();
HttpServletResponse response = (HttpServletResponse) external
.getResponse();
response.setContentType(contentType);
response.setHeader("Content-Disposition",
"attachment; filename=\"" + filename+"\"");
ServletOutputStream out = response.getOutputStream();
while ((read = input.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
context.responseComplete();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}

View File

@ -9,7 +9,6 @@
<ui:define name="content">
<h:form id="formTable">
<script >
function resetFields(){
document.getElementById("lugarDireccion").setAttribute("value", "");

View File

@ -1,100 +1,100 @@
<ui:composition
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:pe="http://primefaces.org/ui/extensions"
template="/WEB-INF/templates/template.xhtml"
xmlns:maia="http://java.sun.com/jsf/composite/maiaComponents">
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:pe="http://primefaces.org/ui/extensions"
template="/WEB-INF/templates/template.xhtml"
xmlns:maia="http://java.sun.com/jsf/composite/maiaComponents">
<ui:define name="content">
<h:form id="formTable">
<maia:pageEvents controller="#{profileController}"
queryProcess=":formTable:filters"
queryUpdate=":formTable:group"
focusContainer=":formTable:filters" />
<p:panelGrid id="filters" columns="4" styleClass="m-filters">
<f:facet name="header">
<h:outputText value="#{msg_general.lbl_filters}" />
</f:facet>
<p:outputLabel for="fpk" value="#{msg_general.lbl_code}:" />
<p:inputText id="fpk" value="#{profileController.mfilters['pk']}" maxlength="20" style="width: 160px;">
<pe:keyFilter regEx="/[\d\-]/"/>
</p:inputText>
<p:outputLabel for="fdesc" value="#{msg_general.lbl_description}:" />
<p:inputText id="fdesc" value="#{profileController.mfilters['description']}" maxlength="80" style="width: 480px;" onkeyup="Maia.forceupper(event, this);"/>
</p:panelGrid>
<h:panelGrid columns="7" id="controls" styleClass="m-controls">
<maia:pageControls controller="#{profileController}"
queryProcess=":formTable:filters"
queryUpdate=":formTable:filters :formTable:group"
createUpdate=":formGroup:pEdit"
dialogWidgetVar="dialog" />
</h:panelGrid>
<p:panelGrid id="data-content" columns="1" styleClass="m-data-content">
<f:facet name="header">
<h:outputText value="#{msg_general.htbl_profiles}" />
</f:facet>
<p:dataTable id="group" var="row" value="#{profileController.lrecord}" rows="200" style="min-width: 500px; width: auto;" rowKey="#{row.rowkey()}" selectionMode="single">
<p:column headerText="#{msg_general.lbl_code}" resizable="true" style="width:150px" sortBy="#{row.pk}">
<h:outputText value="#{row.pk}" />
</p:column>
<p:column headerText="#{msg_general.lbl_description}" resizable="true" sortBy="#{row.description}">
<h:outputText value="#{row.description}" />
</p:column>
<p:column>
<p:commandButton value="#{msg_general.btn_edit}" update=":formGroup:pEdit" oncomplete="dialog.show();Maia.focus('formTable\\:idSave');" styleClass="m-action-button" icon="ui-icon-pencil" process="@this, group">
<f:setPropertyActionListener target="#{profileController.record}" value="#{row}" />
<f:setPropertyActionListener target="#{profileController.newRow}" value="#{false}" />
</p:commandButton>
</p:column>
<p:column>
<p:commandButton value="#{msg_general.btn_delete}" update=":formTable:group" styleClass="m-action-button" icon="ui-icon-trash" action="#{profileController.remove()}" process="@this, group" oncomplete="Maia.focus('formTable\\:idSave');">
<f:setPropertyActionListener target="#{profileController.record}" value="#{row}" />
</p:commandButton>
</p:column>
</p:dataTable>
</p:panelGrid>
</h:form>
<h:form id="formTable">
<maia:pageEvents controller="#{profileController}"
queryProcess=":formTable:filters"
queryUpdate=":formTable:group"
focusContainer=":formTable:filters" />
<p:dialog widgetVar="dialog" resizable="false" closeOnEscape="true" modal="true" appendTo="@(body)" showEffect="explode" hideEffect="explode"
styleClass="m-dialog">
<f:facet name="header">
<h:outputText value="#{msg_general.lbl_createoredit}" />
</f:facet>
<h:form id="formGroup">
<p:messages id="messages" autoUpdate="true" globalOnly="true"/>
<h:panelGrid id="pEdit" columns="3" bodyrows="1" >
<p:outputLabel for="code" value="#{msg_bpm.lbl_code}:" />
<h:outputText rendered="#{!profileController.newRow}" value="#{profileController.record.pk}"/>
<p:inputText id="code"
rendered="#{profileController.newRow}"
value="#{profileController.record.pk}"
required="true" maxlength="30"
style="width:160px;" />
<p:message for="code" />
<p:outputLabel for="descripcion" value="#{msg_general.lbl_description}:" />
<p:inputText id="descripcion"
value="#{profileController.record.description}"
required="true" maxlength="80"
onkeyup="Maia.forceupper(event, this);" style="width:480px;" />
<p:message for="descripcion" />
</h:panelGrid>
<h:panelGrid columns="2" >
<maia:dialogControls controller="#{profileController}"
process=":formGroup:pEdit"
update=":formGroup:pEdit :formTable:group"
dialogWidgetVar="dialog" />
</h:panelGrid>
</h:form>
</p:dialog>
<p:panelGrid id="filters" columns="4" styleClass="m-filters">
<f:facet name="header">
<h:outputText value="#{msg_general.lbl_filters}" />
</f:facet>
<p:outputLabel for="fpk" value="#{msg_general.lbl_code}:" />
<p:inputText id="fpk" value="#{profileController.mfilters['pk']}" maxlength="20" style="width: 160px;">
<pe:keyFilter regEx="/[\d\-]/"/>
</p:inputText>
<p:outputLabel for="fdesc" value="#{msg_general.lbl_description}:" />
<p:inputText id="fdesc" value="#{profileController.mfilters['description']}" maxlength="80" style="width: 480px;" onkeyup="Maia.forceupper(event, this);"/>
</p:panelGrid>
<h:panelGrid columns="7" id="controls" styleClass="m-controls">
<maia:pageControls controller="#{profileController}"
queryProcess=":formTable:filters"
queryUpdate=":formTable:filters :formTable:group"
createUpdate=":formGroup:pEdit"
dialogWidgetVar="dialog" />
</h:panelGrid>
<p:panelGrid id="data-content" columns="1" styleClass="m-data-content">
<f:facet name="header">
<h:outputText value="#{msg_general.htbl_profiles}" />
</f:facet>
<p:dataTable id="group" var="row" value="#{profileController.lrecord}" rows="200" style="min-width: 500px; width: auto;" rowKey="#{row.rowkey()}" selectionMode="single">
<p:column headerText="#{msg_general.lbl_code}" resizable="true" style="width:150px" sortBy="#{row.pk}">
<h:outputText value="#{row.pk}" />
</p:column>
<p:column headerText="#{msg_general.lbl_description}" resizable="true" sortBy="#{row.description}">
<h:outputText value="#{row.description}" />
</p:column>
<p:column>
<p:commandButton value="#{msg_general.btn_edit}" update=":formGroup:pEdit" oncomplete="dialog.show();Maia.focus('formTable\\:idSave');" styleClass="m-action-button" icon="ui-icon-pencil" process="@this, group">
<f:setPropertyActionListener target="#{profileController.record}" value="#{row}" />
<f:setPropertyActionListener target="#{profileController.newRow}" value="#{false}" />
</p:commandButton>
</p:column>
<p:column>
<p:commandButton value="#{msg_general.btn_delete}" update=":formTable:group" styleClass="m-action-button" icon="ui-icon-trash" action="#{profileController.remove()}" process="@this, group" oncomplete="Maia.focus('formTable\\:idSave');">
<f:setPropertyActionListener target="#{profileController.record}" value="#{row}" />
</p:commandButton>
</p:column>
</p:dataTable>
</p:panelGrid>
</h:form>
<p:dialog widgetVar="dialog" resizable="false" closeOnEscape="true" modal="true" appendTo="@(body)" showEffect="explode" hideEffect="explode"
styleClass="m-dialog">
<f:facet name="header">
<h:outputText value="#{msg_general.lbl_createoredit}" />
</f:facet>
<h:form id="formGroup">
<p:messages id="messages" autoUpdate="true" globalOnly="true"/>
<h:panelGrid id="pEdit" columns="3" bodyrows="1" >
<p:outputLabel for="code" value="#{msg_bpm.lbl_code}:" />
<h:outputText rendered="#{!profileController.newRow}" value="#{profileController.record.pk}"/>
<p:inputText id="code"
rendered="#{profileController.newRow}"
value="#{profileController.record.pk}"
required="true" maxlength="30"
style="width:160px;" />
<p:message for="code" />
<p:outputLabel for="descripcion" value="#{msg_general.lbl_description}:" />
<p:inputText id="descripcion"
value="#{profileController.record.description}"
required="true" maxlength="80"
onkeyup="Maia.forceupper(event, this);" style="width:480px;" />
<p:message for="descripcion" />
</h:panelGrid>
<h:panelGrid columns="2" >
<maia:dialogControls controller="#{profileController}"
process=":formGroup:pEdit"
update=":formGroup:pEdit :formTable:group"
dialogWidgetVar="dialog" />
</h:panelGrid>
</h:form>
</p:dialog>
</ui:define>
</ui:composition>

Some files were not shown because too many files have changed in this diff Show More