@Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "TIPO", discriminatorType = DiscriminatorType.STRING) public class Expedicion implements Comparador, SeleccionableBaseform, Serializable { @Id @NotNull(message = "NUL|expedicion") @Length(max = 80, message = "LON|expedicion|80") protected String expedicion; @NotNull(message = "NUL|documento") @Length(max = 100, message = "LON|documento|100") protected String documento; @Length(max = 100, message = "LON|suReferencia|20") protected String suReferencia; @Length(max = 50, message = "LON|docmum|50") protected String docnum; //para SAP protected char status; protected char statusOpe; @Min(value = 0, message = "MIN|prioridad|0") @Max(value = 999, message = "MAX|prioridad|999") protected int prioridad; protected boolean urgencia; protected boolean creadoManual; protected Timestamp fechaCreacion; protected Timestamp fechaPrevistaServicio; protected Timestamp fechaIniServicio; protected Timestamp fechaServicio; protected Timestamp fechaTraspaso; protected int numAlbaranes; @Length(max = 80, message = "LON|observacionAlbaran|80") protected String observacionAlbaran; @Length(max = 80, message = "LON|observacionAgencia|80") protected String observacionAgencia; @Length(max = 80, message = "LON|observacionAlmacen|80") protected String observacionAlmacen; @Length(max = 30, message = "LON|cliente|30") protected String cliente; @Length(max = 80, message = "LON|nomcli|80") protected String nomcli; @Length(max = 80, message = "LON|direnvio|80") protected String direnvio; @Length(max = 80, message = "LON|direnvio2|80") protected String direnvio2; @Length(max = 10, message = "LON|cpenvio|10") protected String cpenvio; @Length(max = 80, message = "LON|poblacionenvio|80") protected String poblacionenvio; @Length(max = 80, message = "LON|provinciaenvio|80") protected String provinciaenvio; @Length(max = 30, message = "LON|paisenvio|30") protected String paisenvio; @Length(max = 30, message = "LON|telefonoenvio|30") protected String telefonoenvio; @Length(max = 30, message = "LON|portes|30") protected String portes; @Length(max = 200, message = "LON|expedicionAgencia|200") protected String expedicionAgencia; @Length(max = 80, message = "LON|datoExtra1|80") protected String datoExtra1; @Length(max = 80, message = "LON|datoExtra2|80") protected String datoExtra2; @Length(max = 80, message = "LON|datoExtra3|80") protected String datoExtra3; @Length(max = 80, message = "LON|datoExtra4|80") protected String datoExtra4; @Length(max = 80, message = "LON|datoExtra5|80") protected String datoExtra5; protected boolean imprAlbaran; protected boolean imprEtiqueta; protected boolean imprFactura; protected boolean imprPacking; protected boolean packingImpreso; protected double importeAgencia; @Length(max = 150, message = "LON|ficheroIn|150") protected String ficheroIn; @Length(max = 150, message = "LON|ficheroOut|150") protected String ficheroOut; protected int lineas; //A pesar de ser redundante facilita mucho las busquedas para seleccionar pedidos @Version protected long version; @OneToOne( mappedBy = "expedicion",cascade ={CascadeType.MERGE},fetch = FetchType.LAZY) protected Parking parking; protected String parkingExped; //aqui guardaremos el parking siempre, incluso despues de liberarlo para saber por donde se ha servido @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "packingList") private PackingList packingList; @OneToOne(optional = true,mappedBy = "expedicion",fetch = FetchType.LAZY) protected DatosSSCC datosSSCC; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "codcliente") protected Cliente codcliente; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "agrupacionServicio") protected AgrupacionServicio agrupacionServicio; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "remitente") protected Remitente remitente; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "agencia") protected Agencia agencia; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "grupoEmbalaje") protected GrupoEmbalaje grupoEmbalaje; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "tipoAlmacen") protected TipoAlmacen tipoAlmacen; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "tipoFlujo") protected TipoFlujo tipoFlujo; @OneToOne(fetch = FetchType.LAZY, cascade ={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REMOVE}) @JoinColumn(name = "nodooptimizacion") private NodoArbolOptimiza nodoOptimizacion; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "tipomovimientocliente") protected TipoMovimientoCliente tipoMovimientoCliente; @OneToMany(mappedBy = "expedicion", cascade ={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REMOVE},fetch = FetchType.LAZY) @OrderBy("linea asc") protected Collection lineasExpedicion = new ArrayList<>(); //@OneToMany(mappedBy = "expedOriginal", cascade ={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REMOVE},fetch = FetchType.LAZY) //protected Collection lineasOriginales = new ArrayList<>(); @OneToMany(mappedBy = "expedicion", cascade ={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REMOVE},fetch = FetchType.LAZY) @OrderBy("bulto asc") protected Collection bultos = new ArrayList(); @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "envioAgencia") protected EnvioAgencia envioAgencia; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "tanda") protected Tanda tanda; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "estadocarro") private EstadoCarro estadocarro; @Transient protected boolean optimizadaConIncidencias; @Transient protected int movsTipoBloqueO; @Transient private boolean seleccionado; //para saber si esta seleccionado en el baseform o no @Length(max = 20, message = "LON|tipoServicioTransporte|20") protected String tipoServicioTransporte; protected long idproceso; //proceso de la interfaz que ha creado esa expedicion @Transient private javax.swing.JProgressBar progressBar; @Transient private PrioridadTipoBloque prioridadTipoBloque; @Transient private double volumenTeorico = 0; // Para que el calculo de volumen solo se haga una vez. es redundante @Transient private double volumenTeoricoAlmacen = 0; // Para que el calculo de volumen solo se haga una vez. es redundante @Transient private double pesoTeorico = 0; // Para que el calculo de volumen solo se haga una vez. es redundante