> For the complete documentation index, see [llms.txt](https://avbravo-2.gitbook.io/trucosjakartaee/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://avbravo-2.gitbook.io/trucosjakartaee/overview/jmoordb-web/autoincrementable/generar-autoincrementable-para-multiples-tiendas.md).

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

```java
 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:

```java
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

```java
@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() {
    }

}
```

![](/files/-Lc1X4mveKftE4Z1nk4A)
