Generar autoincrementable para múltiples tiendas relacionadas sin @Referenced

  • 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.

Entity

@Getter
@Setter
public class Factura {

    @Id
    private Integer idfactura;
    private Integer numerofactura;
    private Date fecha;
    private String condicion;
    private Date fechaentrega;
    private String horaentrega;
    private String entregado;
    private String observacion;
    private Integer cantidadmeses;
    private Date fechavencimiento;

    @Referenced(documment = "Cliente", repository = "com.avbravo.storeejb.repository.ClienteRepository",
            field = "idcliente", javatype = "String", lazy = false)
    private Cliente cliente;
    private String estatusfactura;
    private Double subtotal;
    private Double itbms;
    private Double descuento;
    private Double total;
    private Double montoacuenta;
    private Double montoarecibir;
    private Double saldo;
    @Referenced(documment = "Usuario", repository = "com.avbravo.storeejb.repository.UsuarioRepository",
            field = "username", javatype = "String", lazy = false)
    private Usuario usuario;

    @Referenced(documment = "Chofer", repository = "com.avbravo.storeejb.repository.ChoferRepository",
            field = "idchofer", javatype = "String", lazy = false)
    private Chofer chofer;

    @Referenced(documment = "Ayudante", repository = "com.avbravo.storeejb.repository.AyudanteRepository",
            field = "idayudante", javatype = "String", lazy = false)
    private Ayudante ayudante;

    private String idalmacen;
    private String tipoalmacen;

    @Embedded
    private List<UserInfo> userInfo;

    public Factura() {
    }

}

Last updated