/*
* 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;
}
}