use of eu.ggnet.dwoss.stock.ee.entity.Stock in project dwoss by gg-net.
the class UnitProcessorOperation method transfer.
/**
* Transfers a UniqueUnits StockUnit to the supplied Stock.
* <p>
* <ul>
* <li>Validate, if a StockUnit for the UniqueUnit exists, and this StockUnit is in Stock</li>
* <li>Transfer StockUnit via {@link StockTransactionType#EXTERNAL_TRANSFER}</li>
* <li>Update the SopoUnit</li>
* </ul>
* <p/>
* @param uniqueUnit the uniqueUnit
* @param stockId the stockId
* @param arranger
* @return
*/
// TODO: Use StockTransactionEmo.resquestExternalTransfer and completeExternalTransfer
@Override
public UniqueUnit transfer(UniqueUnit uniqueUnit, int stockId, String arranger) {
StockUnit stockUnit = new StockUnitEao(stockEm).findByUniqueUnitId(uniqueUnit.getId());
if (stockUnit == null)
throw new IllegalArgumentException("No StockUnit for " + uniqueUnit);
if (stockUnit.isInTransaction())
throw new IllegalArgumentException(stockUnit + " is on Transaction");
Stock destination = new DefaultEao<>(Stock.class, stockEm).findById(stockId);
StockTransaction st = new StockTransaction(StockTransactionType.EXTERNAL_TRANSFER);
StockTransactionStatus status = new StockTransactionStatus(StockTransactionStatusType.COMPLETED, new Date());
status.addParticipation(new StockTransactionParticipation(StockTransactionParticipationType.ARRANGER, arranger));
st.addStatus(status);
st.setSource(stockUnit.getStock());
st.setDestination(destination);
st.addPosition(new StockTransactionPosition(stockUnit));
stockEm.persist(st);
stockUnit.setPosition(null);
new StockLocationDiscoverer(stockEm).discoverAndSetLocation(stockUnit, destination);
uniqueUnit = new UniqueUnitEao(uuEm).findById(uniqueUnit.getId());
uniqueUnit.addHistory("External Stock change from " + stockUnit.getStock() + " to " + destination + " by " + arranger);
uniqueUnit.fetchEager();
return uniqueUnit;
}
use of eu.ggnet.dwoss.stock.ee.entity.Stock in project dwoss by gg-net.
the class ReceiptGeneratorOperation method makeUniqueUnit.
/**
* Generates one UniquUnits and receipts it.
*
* @return the generated UniquUnits.
*/
public UniqueUnit makeUniqueUnit() {
Stock stock = findOrMakeStock();
TradeName contractor = new ArrayList<>(contractors.all()).get(R.nextInt(contractors.all().size()));
Shipment shipment = new Shipment("TEST-SHIPMENT-" + R.nextInt(10), contractor, TradeName.ACER, Shipment.Status.OPENED);
stockEm.persist(shipment);
StockTransaction transaction = stockTransactionEmo.requestRollInPrepared(stock.getId(), "SampleGenerator", "Rollin via makeUniqueUnit");
ProductSpec productSpec = makeProductSpec();
Product product = uniqueUnitAgent.findById(Product.class, productSpec.getProductId());
UniqueUnit unit = unitGenerator.makeUniqueUnit(contractor, product);
unitProcessor.receipt(unit, product, shipment, transaction, ReceiptOperation.SALEABLE, "SampleGenerator", "Generator");
stockTransactionProcessor.rollIn(Arrays.asList(transaction), "JUnit");
return uniqueUnitAgent.findUnitByIdentifierEager(REFURBISHED_ID, unit.getRefurbishId());
}
use of eu.ggnet.dwoss.stock.ee.entity.Stock in project dwoss by gg-net.
the class LogicTransactionEmoIT method testEquilibrate.
@Test
public void testEquilibrate() throws Exception {
L.info("starting test equilibrate");
utx.begin();
em.joinTransaction();
Stock s = new Stock(0);
s.setName("Test-0");
L.debug("Persisted {}", s);
em.persist(s);
// StockEntityHelper.createOrUpdateMasterData(em);
utx.commit();
utx.begin();
em.joinTransaction();
s = em.merge(s);
L.debug("Merged {}", s);
LogicTransaction logicTransaction = new LogicTransaction();
LogicTransaction logicTransaction1 = new LogicTransaction();
LogicTransaction logicTransaction2 = new LogicTransaction();
StockUnit stockUnit1 = new StockUnit("Unit1", "Unit1", 1);
StockUnit stockUnit2 = new StockUnit("Unit2", "Unit2", 2);
StockUnit stockUnit3 = new StockUnit("Unit3", "Unit3", 3);
StockUnit stockUnit4 = new StockUnit("Unit4", "Unit4", 4);
StockUnit stockUnit5 = new StockUnit("Unit5", "Unit5", 5);
StockUnit stockUnit6 = new StockUnit("Unit6", "Unit6", 6);
StockUnit stockUnit7 = new StockUnit("Unit7", "Unit7", 7);
StockUnit stockUnit8 = new StockUnit("Unit8", "Unit8", 8);
stockUnit1.setStock(s);
stockUnit2.setStock(s);
stockUnit3.setStock(s);
stockUnit4.setStock(s);
stockUnit5.setStock(s);
stockUnit6.setStock(s);
stockUnit7.setStock(s);
stockUnit8.setStock(s);
logicTransaction.setDossierId(1l);
logicTransaction1.setDossierId(1l);
logicTransaction2.setDossierId(1l);
em.persist(logicTransaction);
em.persist(logicTransaction1);
em.persist(logicTransaction2);
em.persist(stockUnit1);
em.persist(stockUnit2);
em.persist(stockUnit3);
em.persist(stockUnit4);
em.persist(stockUnit5);
em.persist(stockUnit6);
em.persist(stockUnit7);
em.persist(stockUnit8);
logicTransaction.add(stockUnit1);
logicTransaction.add(stockUnit2);
logicTransaction1.add(stockUnit3);
logicTransaction1.add(stockUnit4);
logicTransaction2.add(stockUnit5);
logicTransaction2.add(stockUnit6);
L.debug("pre commit");
utx.commit();
L.debug("Post Commit");
utx.begin();
em.joinTransaction();
LogicTransaction find = em.find(LogicTransaction.class, 1l);
assertTrue("Size was not 2. find=" + find, find.getUnits().size() == 2);
assertTrue("It wasnt All Units correctly in the Transaction. find=" + find, find.getUnits().containsAll(Arrays.asList(new StockUnit[] { stockUnit1, stockUnit2 })));
utx.commit();
LogicTransactionEmo emo = new LogicTransactionEmo(em);
utx.begin();
em.joinTransaction();
emo.equilibrate(1l, Arrays.asList(new Integer[] { 1, 2, 7, 8 }));
utx.commit();
utx.begin();
em.joinTransaction();
find = em.find(LogicTransaction.class, 1l);
assertTrue("Size was not 4. find=" + find, find.getUnits().size() == 4);
assertTrue("It wasnt All Units correctly in the Transaction. find=" + find, find.getUnits().containsAll(Arrays.asList(new StockUnit[] { stockUnit1, stockUnit2, stockUnit7, stockUnit8 })));
utx.commit();
utx.begin();
em.joinTransaction();
emo.equilibrate(1l, Arrays.asList(new Integer[] { 1, 2, 8 }));
utx.commit();
utx.begin();
em.joinTransaction();
find = em.find(LogicTransaction.class, 1l);
assertTrue("Size was not 3. find=" + find, find.getUnits().size() == 3);
assertTrue("It wasnt All Units correctly in the Transaction. find=" + find, find.getUnits().containsAll(Arrays.asList(new StockUnit[] { stockUnit1, stockUnit2, stockUnit8 })));
utx.commit();
utx.begin();
em.joinTransaction();
emo.equilibrate(1l, Arrays.asList(new Integer[] { 1, 7, 8 }));
utx.commit();
utx.begin();
em.joinTransaction();
find = em.find(LogicTransaction.class, 1l);
assertTrue("Size was not 3. find=" + find, find.getUnits().size() == 3);
assertTrue("It wasnt All Units correctly in the Transaction. find=" + find, find.getUnits().containsAll(Arrays.asList(new StockUnit[] { stockUnit1, stockUnit7, stockUnit8 })));
utx.commit();
utx.begin();
em.joinTransaction();
emo.equilibrate(1l, Arrays.asList(new Integer[] {}));
utx.commit();
utx.begin();
em.joinTransaction();
find = em.find(LogicTransaction.class, 1l);
assertTrue("LT was not null. find=" + find, find == null);
utx.commit();
utx.begin();
em.joinTransaction();
emo.equilibrate(5l, Arrays.asList(new Integer[] { 1, 2, 7, 8 }));
utx.commit();
utx.begin();
em.joinTransaction();
find = new LogicTransactionEao(em).findByDossierId(5l);
assertTrue("LT was Null.", find != null);
assertTrue("Size was not 4. find=" + find, find.getUnits().size() == 4);
assertTrue("It wasnt All Units correctly in the Transaction. find=" + find, find.getUnits().containsAll(Arrays.asList(new StockUnit[] { stockUnit1, stockUnit2, stockUnit7, stockUnit8 })));
utx.commit();
L.info("stopping test equilibrate");
}
use of eu.ggnet.dwoss.stock.ee.entity.Stock in project dwoss by gg-net.
the class StockTransactionEaoIT method testfind.
@Test
public void testfind() throws Exception {
utx.begin();
em.joinTransaction();
Stock s1 = new Stock(0, "TEEEEEEEST");
Stock s2 = new Stock(1, "TEEEEEEEST");
em.persist(s1);
em.persist(s2);
StockTransaction st1 = new StockTransaction(StockTransactionType.ROLL_IN);
st1.setDestination(s1);
st1.addStatus(new StockTransactionStatus(StockTransactionStatusType.PREPARED, new Date()));
st1.addStatus(new StockTransactionStatus(StockTransactionStatusType.COMPLETED, new Date()));
StockTransaction st2 = new StockTransaction(StockTransactionType.ROLL_IN);
st2.setDestination(s1);
st2.addStatus(new StockTransactionStatus(StockTransactionStatusType.PREPARED, new Date()));
StockTransaction st3 = new StockTransaction(StockTransactionType.DESTROY);
st3.setSource(s1);
st3.addStatus(new StockTransactionStatus(StockTransactionStatusType.PREPARED, new Date()));
StockTransaction st4 = new StockTransaction(StockTransactionType.ROLL_IN);
st4.setDestination(s2);
StockTransactionStatus status = new StockTransactionStatus(StockTransactionStatusType.PREPARED, new Date());
status.addParticipation(new StockTransactionParticipation(StockTransactionParticipationType.PICKER, "Hugo"));
st4.addStatus(status);
st4.setComment("Muh");
em.persist(st1);
em.persist(st2);
em.persist(st3);
em.persist(st4);
utx.commit();
utx.begin();
em.joinTransaction();
StockTransactionEao stockTransactionEao = new StockTransactionEao(em);
List<StockTransaction> sts = stockTransactionEao.findByDestination(s1.getId(), StockTransactionType.ROLL_IN, StockTransactionStatusType.PREPARED);
assertNotNull(sts);
assertEquals(1, sts.size());
assertEquals(st2.getId(), sts.get(0).getId());
sts = stockTransactionEao.findByDestination(s2.getId(), StockTransactionType.ROLL_IN, StockTransactionStatusType.PREPARED, "Hugo", "Muh");
assertNotNull(sts);
assertEquals(1, sts.size());
assertEquals(st4.getId(), sts.get(0).getId());
utx.commit();
}
use of eu.ggnet.dwoss.stock.ee.entity.Stock in project dwoss by gg-net.
the class StockTransactionEmoIT method testRequestRollInPrepared.
@Test
public void testRequestRollInPrepared() throws Exception {
List<Stock> stocks = gen.makeStocksAndLocations(2);
StockTransactionEmo stockTransactionEmo = new StockTransactionEmo(em);
utx.begin();
em.joinTransaction();
StockTransaction st1 = stockTransactionEmo.requestRollInPrepared(stocks.get(0).getId(), "Hugo", "Ein toller Komentar");
assertNotNull(st1);
utx.commit();
utx.begin();
em.joinTransaction();
StockTransaction st2 = stockTransactionEmo.requestRollInPrepared(stocks.get(0).getId(), "Hugo", "Ein toller Komentar");
assertNotNull(st2);
assertEquals(st1.getId(), st2.getId());
st2.addStatus(new StockTransactionStatus(COMPLETED, new Date()));
utx.commit();
utx.begin();
em.joinTransaction();
StockTransaction st3 = stockTransactionEmo.requestRollInPrepared(stocks.get(0).getId(), "Hugo", "Ein toller Komentar");
assertNotNull(st3);
assertFalse(st1.getId() == st3.getId());
utx.commit();
}
Aggregations