Mostrar un datatable dentro de un dialogo
Last updated
Was this helpful?
Last updated
Was this helpful?
Deseamos que al dar clic en la fila carga el detalle de una entidad relacionada. los detalles de la factura.
En el datatable usamos un ajax para invocar el metodo procesar.
<p:dataTable id="facturaDataTable" var="item"
value="#{facturaController.facturaDataModel}"
selectionMode="single"
widgetVar="facturaDataTable"
selection="#{facturaController.facturaSelected}"
filteredValue="#{facturaController.facturaFiltered}"
rowKey="#{item.idfactura}"
rows="12" paginator="true" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15" emptyMessage="#{msg.nohayregistrosconesecriterio}" reflow="true">
<f:facet name="header">
<p:outputPanel>
<div class="searchLoader">
<p:graphicImage name="/img/search-loader.gif"/>
</div>
<input type="text" jsf:id="globalFilter" jsf:onkeyup="PF('facturaDataTable').filter()"
class="search" placeholder="#{msg['boton.search']}"/>
</p:outputPanel>
</f:facet>
<p:ajax event="rowSelect" update=":form:facturaDetaill :form:detallefacturaDataTable"
listener="#{facturaController.procesar(facturaController.facturaSelected)}"
oncomplete="PF('facturaDialog').show()" />
public String procesar(Factura factura){
try {
System.out.println("............procesar"+factura.getIdfactura());
detalledefacturaList = detalledefacturaFacade.findByIdfacturaDetalles(factura);
if (detalledefacturaList == null || detalledefacturaList.isEmpty()) {
System.out.println("-------no tiene detalles");
JsfUtil.addWarningMessage("Esta factura no tiene detalles");
return"";
} else {
System.out.println("------tiene detalles size() "+detalledefacturaList.size());
detalledefacturaDataModel = new DetalledefacturaDataModel(detalledefacturaList);
detalledefacturaFiltered = detalledefacturaList;
}
} catch (Exception e) {
JsfUtil.addErrorMessage("procesar() " + e.getLocalizedMessage());
}
return "";
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.javscaz.fiscaljsd.controller;
import com.avbravo.avbravoutils.JsfUtil;
import com.avbravo.avbravoutils.printer.Printer;
import com.javscaz.fiscaljsd.controller.datamodel.DetalledefacturaDataModel;
import com.javscaz.fiscaljsd.controller.datamodel.FacturaDataModel;
import com.javscaz.fiscaljsd.controller.interfaces.IController;
import com.javscaz.fiscaljsd.controller.util.ResourcesFiles;
import com.javscaz.fiscaljsd.reportes.FacturarproductosPrint;
import com.javscaz.pilarjsd.ejb.DetalledefacturaFacade;
import com.javscaz.pilarjsd.ejb.FacturaFacade;
import com.javscaz.pilarjsd.entity.Detalledefactura;
import com.javscaz.pilarjsd.entity.Factura;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import javax.inject.Inject;
import javax.swing.JOptionPane;
import org.primefaces.context.RequestContext;
import tfhka.PrinterException;
/**
*
* @author avbravo
*/
@Named
@ViewScoped
//@SessionScoped
public class FacturaController implements Serializable, IController {
private static final long serialVersionUID = 1L;
private FacturaDataModel facturaDataModel;
private DetalledefacturaDataModel detalledefacturaDataModel;
List<FacturarproductosPrint> listFacturarproductosPrint = new ArrayList<>();
@Inject
ImpresorafiscalController impresorafiscalController;
@Inject
FacturaFacade facturaFacade;
@Inject
DetalledefacturaFacade detalledefacturaFacade;
List<Factura> facturaList;
List<Factura> facturaFiltered;
List<Detalledefactura> detalledefacturaList;
List<Detalledefactura> detalledefacturaFiltered;
Factura factura = new Factura();
Factura facturaSelected = new Factura();
Detalledefactura detalledefacturaSelected = new Detalledefactura();
@Inject
ResourcesFiles rf;
@Inject
Printer printer;
public DetalledefacturaFacade getDetalledefacturaFacade() {
return detalledefacturaFacade;
}
public void setDetalledefacturaFacade(DetalledefacturaFacade detalledefacturaFacade) {
this.detalledefacturaFacade = detalledefacturaFacade;
}
public Detalledefactura getDetalledefacturaSelected() {
return detalledefacturaSelected;
}
public void setDetalledefacturaSelected(Detalledefactura detalledefacturaSelected) {
this.detalledefacturaSelected = detalledefacturaSelected;
}
public DetalledefacturaDataModel getDetalledefacturaDataModel() {
return detalledefacturaDataModel;
}
public void setDetalledefacturaDataModel(DetalledefacturaDataModel detalledefacturaDataModel) {
this.detalledefacturaDataModel = detalledefacturaDataModel;
}
public List<Detalledefactura> getDetalledefacturaList() {
return detalledefacturaList;
}
public void setDetalledefacturaList(List<Detalledefactura> detalledefacturaList) {
this.detalledefacturaList = detalledefacturaList;
}
public List<Detalledefactura> getDetalledefacturaFiltered() {
return detalledefacturaFiltered;
}
public void setDetalledefacturaFiltered(List<Detalledefactura> detalledefacturaFiltered) {
this.detalledefacturaFiltered = detalledefacturaFiltered;
}
public List<Factura> getFacturaList() {
return facturaList;
}
public void setFacturaList(List<Factura> facturaList) {
this.facturaList = facturaList;
}
public List<Factura> getFacturaFiltered() {
return facturaFiltered;
}
public void setFacturaFiltered(List<Factura> facturaFiltered) {
this.facturaFiltered = facturaFiltered;
}
public Factura getFactura() {
return factura;
}
public void setFactura(Factura factura) {
this.factura = factura;
}
public Factura getFacturaSelected() {
return facturaSelected;
}
public void setFacturaSelected(Factura facturaSelected) {
this.facturaSelected = facturaSelected;
}
public FacturaDataModel getFacturaDataModel() {
return facturaDataModel;
}
public void setFacturaDataModel(FacturaDataModel facturaDataModel) {
this.facturaDataModel = facturaDataModel;
}
/**
* Creates a new instance of FacturaController
*/
public String procesar(Factura factura){
try {
System.out.println("............procesar"+factura.getIdfactura());
detalledefacturaList = detalledefacturaFacade.findByIdfacturaDetalles(factura);
if (detalledefacturaList == null || detalledefacturaList.isEmpty()) {
System.out.println("-------no tiene detalles");
JsfUtil.addWarningMessage("Esta factura no tiene detalles");
return"";
} else {
System.out.println("------tiene detalles size() "+detalledefacturaList.size());
detalledefacturaDataModel = new DetalledefacturaDataModel(detalledefacturaList);
detalledefacturaFiltered = detalledefacturaList;
}
} catch (Exception e) {
JsfUtil.addErrorMessage("procesar() " + e.getLocalizedMessage());
}
return "";
}
@PostConstruct
public void init() {
try {
System.out.println("----init()");
facturaList = new ArrayList<>();
facturaFiltered = new ArrayList<>();
detalledefacturaList = new ArrayList<>();
detalledefacturaFiltered = new ArrayList<>();
String idfactura = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idfactura");
if (idfactura != null) {
System.out.println("=========(idfactura != null)===========");
List<Factura> list = facturaFacade.findByIdfactura(Integer.parseInt(idfactura));
if (!list.isEmpty()) {
factura = list.get(0);
detalledefacturaList = detalledefacturaFacade.findByIdfacturaDetalles(factura);
if (detalledefacturaList == null || detalledefacturaList.isEmpty()) {
JsfUtil.addWarningMessage("Esta factura no tiene detalles");
return;
} else {
detalledefacturaDataModel = new DetalledefacturaDataModel(detalledefacturaList);
detalledefacturaFiltered = detalledefacturaList;
}
}
// factura = facturaFacade.find(id);
// if (optional.isPresent()) {
// factura = optional.get();
// }
//
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().put("idfactura", null);
} else {
System.out.println("=========(idfactura == null)===========");
// facturaList = facturaFacade.findAll();
facturaList = facturaFacade.findByImpreso("no");
facturaFiltered = facturaList;
facturaDataModel = new FacturaDataModel(facturaList);
}
} catch (Exception e) {
JsfUtil.addErrorMessage("init() " + e.getLocalizedMessage());
}
}
public FacturaController() {
}
@Override
public String prepareNew() {
factura = new Factura();
return "";
}
@Override
public void reset() {
RequestContext.getCurrentInstance().reset(":form:content");
prepareNew();
}
@Override
public String save() {
// try {
//
// List<Factura> list= facturaFacade.findByIdfactura(factura.getIdfactura());
//
// if (optional.isPresent()) {
// JsfUtil.warningDialog(rf.getMensaje("info.message"), rf.getMensaje("warning.idexist"));
// return null;
// }
//
// if (facturaFacade.save(factura)) {
// JsfUtil.addS/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.javscaz.fiscaljsd.controller;
import com.avbravo.avbravoutils.JsfUtil;
import com.avbravo.avbravoutils.printer.Printer;
import com.javscaz.fiscaljsd.controller.datamodel.DetalledefacturaDataModel;
import com.javscaz.fiscaljsd.controller.datamodel.FacturaDataModel;
import com.javscaz.fiscaljsd.controller.interfaces.IController;
import com.javscaz.fiscaljsd.controller.util.ResourcesFiles;
import com.javscaz.fiscaljsd.reportes.FacturarproductosPrint;
import com.javscaz.pilarjsd.ejb.DetalledefacturaFacade;
import com.javscaz.pilarjsd.ejb.FacturaFacade;
import com.javscaz.pilarjsd.entity.Detalledefactura;
import com.javscaz.pilarjsd.entity.Factura;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import javax.inject.Inject;
import javax.swing.JOptionPane;
import org.primefaces.context.RequestContext;
import tfhka.PrinterException;
/**
*
* @author avbravo
*/
@Named
@ViewScoped
//@SessionScoped
public class FacturaController implements Serializable, IController {
private static final long serialVersionUID = 1L;
private FacturaDataModel facturaDataModel;
private DetalledefacturaDataModel detalledefacturaDataModel;
List<FacturarproductosPrint> listFacturarproductosPrint = new ArrayList<>();
@Inject
ImpresorafiscalController impresorafiscalController;
@Inject
FacturaFacade facturaFacade;
@Inject
DetalledefacturaFacade detalledefacturaFacade;
List<Factura> facturaList;
List<Factura> facturaFiltered;
List<Detalledefactura> detalledefacturaList;
List<Detalledefactura> detalledefacturaFiltered;
Factura factura = new Factura();
Factura facturaSelected = new Factura();
Detalledefactura detalledefacturaSelected = new Detalledefactura();
@Inject
ResourcesFiles rf;
@Inject
Printer printer;
public DetalledefacturaFacade getDetalledefacturaFacade() {
return detalledefacturaFacade;
}
public void setDetalledefacturaFacade(DetalledefacturaFacade detalledefacturaFacade) {
this.detalledefacturaFacade = detalledefacturaFacade;
}
public Detalledefactura getDetalledefacturaSelected() {
return detalledefacturaSelected;
}
public void setDetalledefacturaSelected(Detalledefactura detalledefacturaSelected) {
this.detalledefacturaSelected = detalledefacturaSelected;
}
public DetalledefacturaDataModel getDetalledefacturaDataModel() {
return detalledefacturaDataModel;
}
public void setDetalledefacturaDataModel(DetalledefacturaDataModel detalledefacturaDataModel) {
this.detalledefacturaDataModel = detalledefacturaDataModel;
}
public List<Detalledefactura> getDetalledefacturaList() {
return detalledefacturaList;
}
public void setDetalledefacturaList(List<Detalledefactura> detalledefacturaList) {
this.detalledefacturaList = detalledefacturaList;
}
public List<Detalledefactura> getDetalledefacturaFiltered() {
return detalledefacturaFiltered;
}
public void setDetalledefacturaFiltered(List<Detalledefactura> detalledefacturaFiltered) {
this.detalledefacturaFiltered = detalledefacturaFiltered;
}
public List<Factura> getFacturaList() {
return facturaList;
}
public void setFacturaList(List<Factura> facturaList) {
this.facturaList = facturaList;
}
public List<Factura> getFacturaFiltered() {
return facturaFiltered;
}
public void setFacturaFiltered(List<Factura> facturaFiltered) {
this.facturaFiltered = facturaFiltered;
}
public Factura getFactura() {
return factura;
}
public void setFactura(Factura factura) {
this.factura = factura;
}
public Factura getFacturaSelected() {
return facturaSelected;
}
public void setFacturaSelected(Factura facturaSelected) {
this.facturaSelected = facturaSelected;
}
public FacturaDataModel getFacturaDataModel() {
return facturaDataModel;
}
public void setFacturaDataModel(FacturaDataModel facturaDataModel) {
this.facturaDataModel = facturaDataModel;
}
/**
* Creates a new instance of FacturaController
*/
public String procesar(Factura factura){
try {
System.out.println("............procesar"+factura.getIdfactura());
detalledefacturaList = detalledefacturaFacade.findByIdfacturaDetalles(factura);
if (detalledefacturaList == null || detalledefacturaList.isEmpty()) {
System.out.println("-------no tiene detalles");
JsfUtil.addWarningMessage("Esta factura no tiene detalles");
return"";
} else {
System.out.println("------tiene detalles size() "+detalledefacturaList.size());
detalledefacturaDataModel = new DetalledefacturaDataModel(detalledefacturaList);
detalledefacturaFiltered = detalledefacturaList;
}
} catch (Exception e) {
JsfUtil.addErrorMessage("procesar() " + e.getLocalizedMessage());
}
return "";
}
@PostConstruct
public void init() {
try {
System.out.println("----init()");
facturaList = new ArrayList<>();
facturaFiltered = new ArrayList<>();
detalledefacturaList = new ArrayList<>();
detalledefacturaFiltered = new ArrayList<>();
String idfactura = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idfactura");
if (idfactura != null) {
System.out.println("=========(idfactura != null)===========");
List<Factura> list = facturaFacade.findByIdfactura(Integer.parseInt(idfactura));
if (!list.isEmpty()) {
factura = list.get(0);
detalledefacturaList = detalledefacturaFacade.findByIdfacturaDetalles(factura);
if (detalledefacturaList == null || detalledefacturaList.isEmpty()) {
JsfUtil.addWarningMessage("Esta factura no tiene detalles");
return;
} else {
detalledefacturaDataModel = new DetalledefacturaDataModel(detalledefacturaList);
detalledefacturaFiltered = detalledefacturaList;
}
}
// factura = facturaFacade.find(id);
// if (optional.isPresent()) {
// factura = optional.get();
// }
//
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().put("idfactura", null);
} else {
System.out.println("=========(idfactura == null)===========");
// facturaList = facturaFacade.findAll();
facturaList = facturaFacade.findByImpreso("no");
facturaFiltered = facturaList;
facturaDataModel = new FacturaDataModel(facturaList);
}
} catch (Exception e) {
JsfUtil.addErrorMessage("init() " + e.getLocalizedMessage());
}
}
public FacturaController() {
}
@Override
public String prepareNew() {
factura = new Factura();
return "";
}
@Override
public void reset() {
RequestContext.getCurrentInstance().reset(":form:content");
prepareNew();
}
@Override
public String save() {
// try {
//
// List<Factura> list= facturaFacade.findByIdfactura(factura.getIdfactura());
//
// if (optional.isPresent()) {
// JsfUtil.warningDialog(rf.getMensaje("info.message"), rf.getMensaje("warning.idexist"));
// return null;
// }
//
// if (facturaFacade.save(factura)) {
// JsfUtil.addSuccessMessage(rf.getMensaje("info.save"));
// } else {
// JsfUtil.addSuccessMessage("save() " + facturaFacade.getException().toString());
// }
// } catch (Exception e) {
// JsfUtil.addErrorMessage("save()" + e.getLocalizedMessage());
// }
return "";
}
@Override
public String prepareEdit() {
return "/pages/factura/view.xhtml";
}
public String ajax(Factura factura){
try {
System.out.println("---> ajax");
System.out.println("-.....> idfactura "+factura.getIdfactura());
//procesar(factura.getIdfactura().toString());
} catch (Exception e) {
JsfUtil.addErrorMessage("ajax() "+e.getLocalizedMessage());
}
return " ";
}
public String prepareEdit(Factura factura) {
this.factura = factura;
return "/pages/factura/view.xhtml";
}
@Override
public String edit() {
// try {
// facturaFacade.update(factura);
//
// JsfUtil.addSuccessMessage(rf.getMensaje("info.update"));
//
// } catch (Exception e) {
// JsfUtil.addErrorMessage(e.getLocalizedMessage());
// }
return "";
}
@Override
public String delete() {
// if (facturaFacade.delete("idfactura", factura.getIdfactura())) {
// JsfUtil.addSuccessMessage(rf.getMensaje("info.delete"));
// factura = new Factura();
// }
return "/pages/factura/list.xhtml";
}
@Override
public String remove() {
// if (facturaFacade.delete("idfactura", factura.getIdfactura())) {
// JsfUtil.addSuccessMessage(rf.getMensaje("info.delete"));
// }
return "";
}
@Override
public String deleteAll() {
// if (facturaFacade.deleteAll() != 0) {
// JsfUtil.addSuccessMessage(rf.getMensaje("info.delete"));
//
// }
return "";
}
@Override
public String print() {
try {
if (!impresorafiscalController.getAbierto()) {
JsfUtil.addErrorMessage("Conecte la impresora");
return "";
}
imprimirFactura(factura);
// List<Factura> list = new ArrayList<>();
// list.add(factura);
// String ruta = "/resources/reportes/factura/factura.jasper";
// HashMap parameters = new HashMap();
//// parameters.put("P_parametro", "valor");
//
// printer.imprimir(list, ruta, parameters);
} catch (Exception ex) {
JsfUtil.addErrorMessage("imprimir() " + ex.getLocalizedMessage());
}
return null;
}
@Override
public String printAll() {
try {
List<Factura> list = new ArrayList<>();
if (facturaFiltered.isEmpty()) {
list = facturaList;
} else {
list = facturaFiltered;
}
String ruta = "/resources/reportes/factura/factura.jasper";
HashMap parameters = new HashMap();
// parameters.put("P_parametro", "valor");
printer.imprimir(list, ruta, parameters);
} catch (Exception ex) {
JsfUtil.addErrorMessage("imprimir() " + ex.getLocalizedMessage());
}
return null;
}
private void imprimirFactura(Factura factura) {
try {
listFacturarproductosPrint.removeAll(listFacturarproductosPrint);
if (detalledefacturaList.isEmpty()) {
JsfUtil.addWarningMessage("Esta factura no tiene detalles");
// imprimirFacturaVehiculo(factura);
} else {
for (Detalledefactura r : detalledefacturaList) {
FacturarproductosPrint fp = new FacturarproductosPrint();
if (!r.getIdproducto().getIdproducto().equals("xx")) {
fp.setNombredeproducto(r.getIdproducto().getNombre());
fp.setIdproducto(r.getIdproducto().getIdproducto());
} else {
fp.setNombredeproducto(r.getIdservicio().getDescripciondeservicio());
fp.setIdproducto(r.getIdservicio().getIdservicio());
}
// fp.setNombredeproducto(r.getIdproducto().getNombre());
// fp.setIdproducto(r.getIdproducto().getIdproducto());
fp.setCantidad(r.getCantidad());
fp.setPreciounitario(r.getPreciodeventa());
fp.setTotal(r.getSubtotal());
listFacturarproductosPrint.add(fp);
}
if (listFacturarproductosPrint.isEmpty()) {
JsfUtil.addWarningMessage("No hay registros de facturas...");
return;
} else {
fiscal(listFacturarproductosPrint);
}
}
} catch (Exception e) {
JsfUtil.addWarningMessage("imprimirFactura()" + e.getLocalizedMessage());
}
}
private void fiscal(List<FacturarproductosPrint> list) throws PrinterException {
try {
impresorafiscalController.getImpresora().SendCmd("jS*" + factura.getIdcliente().getNombre());
impresorafiscalController.getImpresora().SendCmd("jR*" + factura.getIdcliente().getIdcliente());
for (FacturarproductosPrint ffis : list) {
int pu_ent = (int) ffis.getPreciounitario().doubleValue();
double pu_dec = Math.rint((ffis.getPreciounitario() - pu_ent) * 100) / 100;
String c1 = conversor(String.valueOf(pu_ent), "preciounitario");
String c2 = c1 + String.valueOf(pu_dec).substring(2, String.valueOf(pu_dec).length()) + "00";
if (c2.length() > 10) {
c2 = c2.substring(0, 10);
}
/*Preparamos la cadena de la cantidad*/
int ca_ent = (int) ffis.getCantidad().doubleValue();
double ca_dec = Math.rint((ffis.getCantidad() - ca_ent) * 100) / 100;
String c3 = conversor(String.valueOf(ca_ent), "cantidad");
String c4 = c3 + String.valueOf(ca_dec).substring(2, String.valueOf(ca_dec).length()) + "000";
String cadena = c2 + c4;
if (cadena.length() > 18) {
cadena = cadena.substring(0, 18);
}
impresorafiscalController.getImpresora().SendCmd("!" + cadena + ffis.getNombredeproducto());
}
switch (factura.getIdformadepago().getFormadepago().toUpperCase().trim()) {
case "EFECTIVO":
impresorafiscalController.getImpresora().SendCmd("101");
break;
case "CHEQUE":
impresorafiscalController.getImpresora().SendCmd("105");
break;
case "T.DEBITO":
impresorafiscalController.getImpresora().SendCmd("109");
break;
case "T.CREDITO":
impresorafiscalController.getImpresora().SendCmd("109");
break;
case "CREDITO":
impresorafiscalController.getImpresora().SendCmd("116");
default:
JsfUtil.addWarningMessage("No tiene forma de pago valida " + factura.getIdformadepago().getFormadepago());
}
JsfUtil.addWarningMessage("Documento impreso");
//actualizo el estatus de la factura
factura.setImpreso("si");
facturaFacade.edit(factura);
//impresora.CloseFpctrl();
} catch (Exception e) {
JsfUtil.addWarningMessage("fiscal()" + e.getLocalizedMessage());
}
}
public static Double redondear(Double n, Integer decimales) {
Double r = 0.0;
try {
switch (decimales) {
case 1:
r = (double) Math.round(n * 10) / 10;
break;
case 2:
r = (double) Math.round(n * 100) / 100;
break;
case 3:
r = (double) Math.round(n * 1000) / 1000;
break;
case 4:
r = (double) Math.round(n * 10000) / 10000;
break;
}
return r;
} catch (Exception e) {
JsfUtil.addWarningMessage("redondear() " + e.getLocalizedMessage());
}
return r;
}
public static String conversor(String d, String tipo) {
try {
Integer tam = d.length();
String r = "";
switch (tipo) {
case "preciounitario":
if (tam != 8) {
for (int i = 0; i < 8 - tam; i++) {
r += "0";
}
d = r + d;
}
break;
case "cantidad":
if (tam != 5) {
for (int i = 0; i < 5 - tam; i++) {
r += "0";
}
d = r + d;
}
break;
}
} catch (Exception e) {
JsfUtil.addWarningMessage("conversor() " + e.getLocalizedMessage().toString());
}
return d;
}
}
uccessMessage(rf.getMensaje("info.save"));
// } else {
// JsfUtil.addSuccessMessage("save() " + facturaFacade.getException().toString());
// }
// } catch (Exception e) {
// JsfUtil.addErrorMessage("save()" + e.getLocalizedMessage());
// }
return "";
}
@Override
public String prepareEdit() {
return "/pages/factura/view.xhtml";
}
public String ajax(Factura factura){
try {
System.out.println("---> ajax");
System.out.println("-.....> idfactura "+factura.getIdfactura());
//procesar(factura.getIdfactura().toString());
} catch (Exception e) {
JsfUtil.addErrorMessage("ajax() "+e.getLocalizedMessage());
}
return " ";
}
public String prepareEdit(Factura factura) {
this.factura = factura;
return "/pages/factura/view.xhtml";
}
@Override
public String edit() {
// try {
// facturaFacade.update(factura);
//
// JsfUtil.addSuccessMessage(rf.getMensaje("info.update"));
//
// } catch (Exception e) {
// JsfUtil.addErrorMessage(e.getLocalizedMessage());
// }
return "";
}
@Override
public String delete() {
// if (facturaFacade.delete("idfactura", factura.getIdfactura())) {
// JsfUtil.addSuccessMessage(rf.getMensaje("info.delete"));
// factura = new Factura();
// }
return "/pages/factura/list.xhtml";
}
@Override
public String remove() {
// if (facturaFacade.delete("idfactura", factura.getIdfactura())) {
// JsfUtil.addSuccessMessage(rf.getMensaje("info.delete"));
// }
return "";
}
@Override
public String deleteAll() {
// if (facturaFacade.deleteAll() != 0) {
// JsfUtil.addSuccessMessage(rf.getMensaje("info.delete"));
//
// }
return "";
}
@Override
public String print() {
try {
if (!impresorafiscalController.getAbierto()) {
JsfUtil.addErrorMessage("Conecte la impresora");
return "";
}
imprimirFactura(factura);
// List<Factura> list = new ArrayList<>();
// list.add(factura);
// String ruta = "/resources/reportes/factura/factura.jasper";
// HashMap parameters = new HashMap();
//// parameters.put("P_parametro", "valor");
//
// printer.imprimir(list, ruta, parameters);
} catch (Exception ex) {
JsfUtil.addErrorMessage("imprimir() " + ex.getLocalizedMessage());
}
return null;
}
@Override
public String printAll() {
try {
List<Factura> list = new ArrayList<>();
if (facturaFiltered.isEmpty()) {
list = facturaList;
} else {
list = facturaFiltered;
}
String ruta = "/resources/reportes/factura/factura.jasper";
HashMap parameters = new HashMap();
// parameters.put("P_parametro", "valor");
printer.imprimir(list, ruta, parameters);
} catch (Exception ex) {
JsfUtil.addErrorMessage("imprimir() " + ex.getLocalizedMessage());
}
return null;
}
private void imprimirFactura(Factura factura) {
try {
listFacturarproductosPrint.removeAll(listFacturarproductosPrint);
if (detalledefacturaList.isEmpty()) {
JsfUtil.addWarningMessage("Esta factura no tiene detalles");
// imprimirFacturaVehiculo(factura);
} else {
for (Detalledefactura r : detalledefacturaList) {
FacturarproductosPrint fp = new FacturarproductosPrint();
if (!r.getIdproducto().getIdproducto().equals("xx")) {
fp.setNombredeproducto(r.getIdproducto().getNombre());
fp.setIdproducto(r.getIdproducto().getIdproducto());
} else {
fp.setNombredeproducto(r.getIdservicio().getDescripciondeservicio());
fp.setIdproducto(r.getIdservicio().getIdservicio());
}
// fp.setNombredeproducto(r.getIdproducto().getNombre());
// fp.setIdproducto(r.getIdproducto().getIdproducto());
fp.setCantidad(r.getCantidad());
fp.setPreciounitario(r.getPreciodeventa());
fp.setTotal(r.getSubtotal());
listFacturarproductosPrint.add(fp);
}
if (listFacturarproductosPrint.isEmpty()) {
JsfUtil.addWarningMessage("No hay registros de facturas...");
return;
} else {
fiscal(listFacturarproductosPrint);
}
}
} catch (Exception e) {
JsfUtil.addWarningMessage("imprimirFactura()" + e.getLocalizedMessage());
}
}
private void fiscal(List<FacturarproductosPrint> list) throws PrinterException {
try {
impresorafiscalController.getImpresora().SendCmd("jS*" + factura.getIdcliente().getNombre());
impresorafiscalController.getImpresora().SendCmd("jR*" + factura.getIdcliente().getIdcliente());
for (FacturarproductosPrint ffis : list) {
int pu_ent = (int) ffis.getPreciounitario().doubleValue();
double pu_dec = Math.rint((ffis.getPreciounitario() - pu_ent) * 100) / 100;
String c1 = conversor(String.valueOf(pu_ent), "preciounitario");
String c2 = c1 + String.valueOf(pu_dec).substring(2, String.valueOf(pu_dec).length()) + "00";
if (c2.length() > 10) {
c2 = c2.substring(0, 10);
}
/*Preparamos la cadena de la cantidad*/
int ca_ent = (int) ffis.getCantidad().doubleValue();
double ca_dec = Math.rint((ffis.getCantidad() - ca_ent) * 100) / 100;
String c3 = conversor(String.valueOf(ca_ent), "cantidad");
String c4 = c3 + String.valueOf(ca_dec).substring(2, String.valueOf(ca_dec).length()) + "000";
String cadena = c2 + c4;
if (cadena.length() > 18) {
cadena = cadena.substring(0, 18);
}
impresorafiscalController.getImpresora().SendCmd("!" + cadena + ffis.getNombredeproducto());
}
switch (factura.getIdformadepago().getFormadepago().toUpperCase().trim()) {
case "EFECTIVO":
impresorafiscalController.getImpresora().SendCmd("101");
break;
case "CHEQUE":
impresorafiscalController.getImpresora().SendCmd("105");
break;
case "T.DEBITO":
impresorafiscalController.getImpresora().SendCmd("109");
break;
case "T.CREDITO":
impresorafiscalController.getImpresora().SendCmd("109");
break;
case "CREDITO":
impresorafiscalController.getImpresora().SendCmd("116");
default:
JsfUtil.addWarningMessage("No tiene forma de pago valida " + factura.getIdformadepago().getFormadepago());
}
JsfUtil.addWarningMessage("Documento impreso");
//actualizo el estatus de la factura
factura.setImpreso("si");
facturaFacade.edit(factura);
//impresora.CloseFpctrl();
} catch (Exception e) {
JsfUtil.addWarningMessage("fiscal()" + e.getLocalizedMessage());
}
}
public static Double redondear(Double n, Integer decimales) {
Double r = 0.0;
try {
switch (decimales) {
case 1:
r = (double) Math.round(n * 10) / 10;
break;
case 2:
r = (double) Math.round(n * 100) / 100;
break;
case 3:
r = (double) Math.round(n * 1000) / 1000;
break;
case 4:
r = (double) Math.round(n * 10000) / 10000;
break;
}
return r;
} catch (Exception e) {
JsfUtil.addWarningMessage("redondear() " + e.getLocalizedMessage());
}
return r;
}
public static String conversor(String d, String tipo) {
try {
Integer tam = d.length();
String r = "";
switch (tipo) {
case "preciounitario":
if (tam != 8) {
for (int i = 0; i < 8 - tam; i++) {
r += "0";
}
d = r + d;
}
break;
case "cantidad":
if (tam != 5) {
for (int i = 0; i < 5 - tam; i++) {
r += "0";
}
d = r + d;
}
break;
}
} catch (Exception e) {
JsfUtil.addWarningMessage("conversor() " + e.getLocalizedMessage().toString());
}
return d;
}
}
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:b="http://bootsfaces.net/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:jsf="http://xmlns.jcp.org/jsf">
<body>
<ui:composition template="./../../WEB-INF/template.xhtml">
<ui:define name="top">
<h1>
#{msg['facturani.list']}
<small> </small>
</h1>
</ui:define>
<!--
Contenido
-->
<ui:define name="content">
<h:form id="form" rendered="#{loginController.loggedIn}">
<h:panelGroup id="content" layout="block">
<p:messages id="msgs"/>
<!--
header del formulario
-->
<!-- <div class="row form-header-2" style="padding-top: 5px;">
<div class="col-md-12 record-status-buttons">
<p:link class="btnn btnn-primary" value="#{msg['boton.new']}" outcome="/pages/factura/create"/>
<p:commandButton class="btnn btnn-primary" value="#{msg['boton.print']}" process=":form:content" action="#{facturaController.printAll()}"
ajax="false"
update=":form:content" />
</div>
</div>-->
<!--
body
-->
<div class="row form-body2">
<!--
los elementos en filas
-->
<p:dataTable id="facturaDataTable" var="item"
value="#{facturaController.facturaDataModel}"
selectionMode="single"
widgetVar="facturaDataTable"
selection="#{facturaController.facturaSelected}"
filteredValue="#{facturaController.facturaFiltered}"
rowKey="#{item.idfactura}"
rows="12" paginator="true" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15" emptyMessage="#{msg.nohayregistrosconesecriterio}" reflow="true">
<f:facet name="header">
<p:outputPanel>
<div class="searchLoader">
<p:graphicImage name="/img/search-loader.gif"/>
</div>
<input type="text" jsf:id="globalFilter" jsf:onkeyup="PF('facturaDataTable').filter()"
class="search" placeholder="#{msg['boton.search']}"/>
</p:outputPanel>
</f:facet>
<p:ajax event="rowSelect" update=":form:facturaDetaill :form:detallefacturaDataTable"
listener="#{facturaController.procesar(facturaController.facturaSelected)}"
oncomplete="PF('facturaDialog').show()" />
<p:column headerText="#{msg.idfactura}" filterBy="#{item.idfactura}"
sortBy="#{item.idfactura}" filterMatchMode="contains"
width="100px;">
<h:outputText value="#{item.idfactura}" />
</p:column>
<!-- <p:column headerText="#{msg.numfiscal}" filterBy="#{item.numfiscal}"
sortBy="#{item.numfiscal}" filterMatchMode="contains"
width="100px;">
<h:outputText value="#{item.numfiscal}" />
</p:column>-->
<p:column headerText="#{msg.cliente}" filterBy="#{item.idcliente}" sortBy="#{item.idcliente}" filterMatchMode="contains" >
<h:outputText value="#{item.idcliente.nombre}" />
</p:column>
<p:column headerText="#{msg.cedula}" filterBy="#{item.idcliente}" sortBy="#{item.idcliente}" filterMatchMode="contains" >
<h:outputText value="#{item.idcliente.idcliente}" />
</p:column>
<p:column headerText="#{msg.impreso}" filterBy="#{item.impreso}"
sortBy="#{item.impreso}" filterMatchMode="contains"
width="100px;">
<h:outputText value="#{item.impreso}" />
</p:column>
<p:column headerText="#{msg.fecha}" filterBy="#{item.fecha}" sortBy="#{item.fecha}" >
<h:outputText value="#{item.fecha}" >
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
</p:dataTable>
<p:dialog header="#{msg['factura.list']}" widgetVar="facturaDialog" width="450" height="450"
modal="true" showEffect="fade" hideEffect="fade" resizable="false" responsive="true">
<p:outputPanel id="facturaDetaill" style="text-align:center;">
<p:panel header="Fatura">
<p:panelGrid columns="2" rendered="#{not empty facturaController.facturaSelected}" layout="grid" styleClass="ui-panelgrid-blank">
<p:outputLabel value="#{msg.idfactura}" style="font-weight: bold"/>
<p:outputLabel value="#{facturaController.facturaSelected.idfactura}" />
<p:outputLabel value="#{msg.impreso}" style="font-weight: bold"/>
<p:outputLabel value="#{facturaController.facturaSelected.impreso}" />
<p:commandButton id="btn2" value="#{msg['boton.edit']}"
class="btnn btnn-primary"
icon="fa fa-edit Fs14 White" style="max-width:150px;"
oncomplete="PF('historialDialog').hide()"
title="#{msg['boton.edit']}"
update=":form:msgs"
action="#{facturaController.prepareEdit(facturaController.facturaSelected)}"
>
<f:param name="idfactura" value="#{facturaController.facturaSelected.idfactura}"/>
</p:commandButton>
</p:panelGrid>
</p:panel>
<p:dataTable id="detallefacturaDataTable" var="item2"
value="#{facturaController.detalledefacturaDataModel}"
selectionMode="single"
widgetVar="detallefacturaDataTable"
selection="#{facturaController.detalledefacturaSelected}"
rowKey="#{item.idfactura}"
rows="25" paginator="true" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15" emptyMessage="#{msg.nohayregistrosconesecriterio}" reflow="true">
<f:facet name="header">
<!-- <p:outputPanel>
<div class="searchLoader">
<p:graphicImage name="/img/search-loader.gif"/>
</div>
<input type="text" jsf:id="globalFilter" jsf:onkeyup="PF('detallefacturaDataTable').filter()" class="search" placeholder="#{msg['boton.search']}"/>
</p:outputPanel>-->
</f:facet>
<p:column headerText="#{msg.idproducto}" filterBy="#{item2.idproducto.idproducto}" sortBy="#{item2.idproducto.idproducto}" filterMatchMode="contains" >
<h:outputText value="#{item2.idproducto.idproducto}" />
</p:column>
<p:column headerText="#{msg.cantidad}" filterBy="#{item2.cantidad}" sortBy="#{item2.cantidad}" filterMatchMode="contains" >
<h:outputText value="#{item2.cantidad}" />
</p:column>
<p:column headerText="#{msg.preciodeventa}" filterBy="#{item2.preciodeventa}" sortBy="#{item2.preciodeventa}" filterMatchMode="contains" >
<h:outputText value="#{item2.preciodeventa}" />
</p:column>
<p:column headerText="#{msg.subtotal}" filterBy="#{item2.subtotal}" sortBy="#{item2.subtotal}" filterMatchMode="contains" >
<h:outputText value="#{item2.subtotal}" />
</p:column>
</p:dataTable>
</p:outputPanel>
</p:dialog>
</div>
</h:panelGroup>
</h:form>
</ui:define>
</ui:composition>
</body>
</html>