Maestro-Detalle Factura

  • Se aplica cuando se tiene una colección de facturas que puede almacenar todas las facturas de las diversas tiendas o gangas,

  • El @Id idfactura es un autoincrementable único independientemente de la tienda o ganga que se use.

  • numerofactura. Es un autoincrementable único por cada tienda o ganga. Este se podrá repetir, es decir pueden existir varias facturas con numero 5, pero se verifica que el atributo tipoalmacen sea diferente.

  • tipoalmacen indica si es tienda o ganga que esta asignado.

  • idalmacen indica el código de la tienda o ganga donde este asignado.

  • En este ejemplo se cuentan con múltiples tiendas y gangas que pueden generar facturas por lo tanto debe existir una secuencia única para cada uno de ellos, podemos generarla mediante los datos del usuario logeado.

 Integer identity = autoincrementableStoreejbServices.getContador("factura");
            factura.setIdfactura(identity);

            String idfacturaalmacen = "factura_" + loginController.getUsuario().getTipoalmacen() + "_" + loginController.getUsuario().getIdalmacen();
            Integer numerofactura = autoincrementableStoreejbServices.getContador(idfacturaalmacen);
            factura.setNumerofactura(numerofactura);

De esta manera si la tienda es 01, se genera un documento con los datos de la factura por ejemplo:

factura_tienda_01
factura_ganga_01
  • De esta manera tenemos autoincrementables para cada tienda o ganga sin afectar el control.

  • Se aplica para estructuras que no tienen @Referenced y necesitan ser relacionados.

onChangeArticulo

  • Cuando se selecciona un articulo para facturarlo

  • Se asigna el precio de venta al credito o contado dependiendo de la condiciòn

  • Se asigna un valor de uno en la cantidad

  • Se multiplica la cantidad por 1

// <editor-fold defaultstate="collapsed" desc="onArticuloChange(int rowIndex, Facturadetalle facturadetalle, String subtipofactura)">
    public String onArticuloChange(int rowIndex, Facturadetalle facturadetalle, String subtipofactura) {
        try {

            Integer cantidademisor = 0;
            Integer cantidadreceptor = 0;
            switch (subtipofactura) {
                case "factura":
                    cantidademisor = inventarioServices.cantidadInventarioOf(facturadetalle.getArticulo(), loginController.getUsuario().getIdalmacen(), loginController.getUsuario().getTipoalmacen());
                    break;
            }

            facturadetalleList.get(rowIndex).setCantidademisor(cantidademisor);
            if(factura.getCondicion().equals("contado")){
                  facturadetalleList.get(rowIndex).setPrecio(facturadetalle.getArticulo().getPrecioventapublico());
            }else{
                   facturadetalleList.get(rowIndex).setPrecio(facturadetalle.getArticulo().getPrecioventacredito());
            }
             facturadetalleList.get(rowIndex).setCantidad(1);
             facturadetalleList.get(rowIndex).setTotal(facturadetalleList.get(rowIndex).getCantidad() *  facturadetalleList.get(rowIndex).getPrecio());

        } catch (Exception e) {
            JsfUtil.errorMessage("onArticuloChange() " + e.getLocalizedMessage());
        }
        return "";
    }
    // </editor-fold>

public void onCellEdit(CellEditEvent event)

  • onCellEdit, valida cuando cambia un valor de una columna en el datatable.

Last updated