use of eu.ggnet.lucidcalc.jexcel.JExcelLucidCalcReader in project dwoss by gg-net.
the class CreditMemoReportIT method testCreditMemoReportOperation.
@Test
public void testCreditMemoReportOperation() throws IOException, InterruptedException {
long customerId = customerGenerator.makeCustomer();
List<UniqueUnit> uus = receiptGenerator.makeUniqueUnits(4, true, true);
UniqueUnit uu1 = uus.get(0);
UniqueUnit uu2 = uus.get(1);
UniqueUnit uu3 = uus.get(2);
UniqueUnit uu4 = uus.get(3);
Product uuProduct1 = uu1.getProduct();
assertThat(uu1).describedAs("First generated UniqueUnit").isNotNull();
StockUnit su1 = stockAgent.findStockUnitByUniqueUnitIdEager(uu1.getId());
assertThat(su1).describedAs("StockUnit of generated UniqueUnit").isNotNull();
assertThat(su1.getStock()).describedAs("Stock of StockUnit of generated UniqueUnit").isNotNull();
int stockIdOfUU1 = su1.getStock().getId();
Dossier dos = redTapeWorker.create(customerId, true, "Me");
Document doc = dos.getActiveDocuments(DocumentType.ORDER).get(0);
assertThat(doc).overridingErrorMessage("Expected active document Order, got null. Dossier: " + dos.toMultiLine()).isNotNull();
doc.append(unit(uu1));
doc.append(unit(uu2));
doc.append(unit(uu3));
doc.append(comment());
doc.append(service());
doc.append(batch(uuProduct1));
doc.append(shippingcost());
// add units to LogicTransaction
unitOverseer.lockStockUnit(dos.getId(), uu1.getIdentifier(UniqueUnit.Identifier.REFURBISHED_ID));
unitOverseer.lockStockUnit(dos.getId(), uu2.getIdentifier(UniqueUnit.Identifier.REFURBISHED_ID));
unitOverseer.lockStockUnit(dos.getId(), uu3.getIdentifier(UniqueUnit.Identifier.REFURBISHED_ID));
unitOverseer.lockStockUnit(dos.getId(), uu4.getIdentifier(UniqueUnit.Identifier.REFURBISHED_ID));
doc = redTapeWorker.update(doc, null, "JUnit");
doc.add(Document.Condition.PAID);
doc.add(Document.Condition.PICKED_UP);
doc.setType(DocumentType.INVOICE);
doc = redTapeWorker.update(doc, null, "JUnit");
LogicTransaction lt = support.findByDossierId(doc.getDossier().getId());
assertNotNull("A LogicTrasaction must exists", lt);
assertEquals("The Size of the LogicTransaction", 3, lt.getUnits().size());
// A CreditMemo for Unit1, negate prices on Annulation Invoice.
for (Position pos : new ArrayList<>(doc.getPositions().values())) {
if (pos.getUniqueUnitId() == uu1.getId() || pos.getType() == PRODUCT_BATCH || pos.getType() == SHIPPING_COST) {
pos.setPrice(pos.getPrice() * -1);
} else {
doc.remove(pos);
}
}
assertEquals("Document should have exactly one possition", 3, doc.getPositions().size());
doc.setType(DocumentType.ANNULATION_INVOICE);
doc = redTapeWorker.update(doc, stockIdOfUU1, "JUnit Test");
Collection<Position> positions = doc.getPositions().values();
// Report somethere in the past till now.
FileJacket jacket = reportOperation.toXls(new Date(1352115909), new Date());
assertNotNull(jacket);
assertEquals(".xls", jacket.getSuffix());
assertTrue(jacket.getContent().length > 0);
List<LoadContainer> read = new JExcelLucidCalcReader().addColumn(0, String.class).addColumn(1, String.class).addColumn(2, String.class).addColumn(3, String.class).addColumn(4, String.class).addColumn(5, Double.class).addColumn(6, Double.class).read(jacket.toTemporaryFile(), LoadContainer.class);
// HINT: Not a complete test, but some fileds at least.
assertThat(positions.stream().map(Position::getPrice).collect(toSet())).containsOnly(read.stream().map(l -> l.netto).toArray((v) -> new Double[v]));
assertThat(positions.stream().map(Position::toAfterTaxPrice).collect(toSet())).containsOnly(read.stream().map(l -> l.brutto).toArray((v) -> new Double[v]));
assertThat(positions.stream().map(Position::getName).collect(toSet())).containsOnly(read.stream().map(l -> l.name).toArray((v) -> new String[v]));
}
use of eu.ggnet.lucidcalc.jexcel.JExcelLucidCalcReader in project dwoss by gg-net.
the class ExporterOperation method toXlsByXls.
/**
* Creates a price compare sheet, expects an xls file with the first column filed with partNos.
*
* @param inFile the infile
* @return the price compare xls outfile.
*/
@Override
public FileJacket toXlsByXls(FileJacket inFile) {
File f = inFile.toTemporaryFile();
LucidCalcReader reader = new JExcelLucidCalcReader();
List<String> partNos = new ArrayList<>();
List<List<? extends Object>> readXls = reader.read(f);
for (List<? extends Object> list : readXls) {
if (list == null || list.isEmpty())
continue;
partNos.add(list.get(0).toString());
}
return toXls(partNos.toArray(new String[0]));
}
use of eu.ggnet.lucidcalc.jexcel.JExcelLucidCalcReader in project dwoss by gg-net.
the class ImageIdHandlerOperation method importMissing.
@Override
public Reply<Void> importMissing(FileJacket inFile) {
final SubMonitor m = monitorFactory.newSubMonitor("Image Ids importieren", 100);
m.message("Reading File");
m.start();
LucidCalcReader reader = new JExcelLucidCalcReader();
reader.addColumn(0, String.class);
reader.addColumn(1, String.class);
reader.addColumn(2, String.class);
reader.addColumn(3, String.class);
reader.addColumn(4, Integer.class);
reader.setHeadline(true);
reader.setTrim(true);
File f = inFile.toTemporaryFile();
List<ImageIdLine> lines = reader.read(f, ImageIdLine.class);
List<String> errors = reader.getErrors();
ProductEao productEao = new ProductEao(uuEm);
m.message("Importing Data");
m.setWorkRemaining(lines.size());
for (ImageIdLine line : lines) {
m.worked(1, "importing " + line.getPartNo());
if (line.getImageId() == null) {
errors.add("No ImageId for " + line.getPartNo());
continue;
}
Product p = productEao.findByPartNo(line.getPartNo());
if (p != null) {
p.setImageId(line.getImageId());
} else {
errors.add("No Product for '" + line.getPartNo() + "'");
}
}
m.finish();
if (!errors.isEmpty())
return Reply.failure(errors.toString());
return Reply.success(null);
}
use of eu.ggnet.lucidcalc.jexcel.JExcelLucidCalcReader in project dwoss by gg-net.
the class StockTakingOperation method xlsToList.
ReaderResult xlsToList(FileJacket inFile) {
LucidCalcReader reader = new JExcelLucidCalcReader();
reader.addColumn(0, String.class);
reader.setHeadline(true);
reader.setTrim(true);
File f = inFile.toTemporaryFile();
return new ReaderResult(reader.read(f), reader.getErrors());
}
use of eu.ggnet.lucidcalc.jexcel.JExcelLucidCalcReader in project dwoss by gg-net.
the class ImporterOperation method fromXls.
/**
* Imports the Pricemanagement from an XLS file with a defined form.
* The Form is as follows
* <ul>
* <li>Column 1 (A) = Refurbished Id, Type:Integer</li>
* <li>Column 2 (C) = Manufacturer PartNo, Type:String</li>
* <li>Column 4 (E) = Retailer Price, Type:Double</li>
* <li>Column 7 (H) = Customer Price without Tax, Type:Double</li>
* <li>Column 9 (J) = Set/Unset PartNoFixed Price, Type:Integer</li>
* <li>Column 10 (K) = Warranty Id, Type:Integer</li>
* </ul>
*
* @param jacket the file in a jacket
* @param arranger
* @return a Reply of FileJacket
* @throws UserInfoException
*/
@Override
public Reply<File> fromXls(FileJacket jacket, String arranger) throws UserInfoException {
final SubMonitor m = monitorFactory.newSubMonitor("Import from Xls", 10);
m.start();
File f = jacket.toTemporaryFile();
LucidCalcReader reader = new JExcelLucidCalcReader();
// RefurbishedId
reader.addColumn(0, String.class);
// PartNo
reader.addColumn(2, String.class);
// RetailerPrice
reader.addColumn(4, Double.class);
// CustomerPrice
reader.addColumn(7, Double.class);
// UnitFixPrice
reader.addColumn(9, Integer.class);
// PartFixPrice
reader.addColumn(10, Integer.class);
// WarrantyId
reader.addColumn(11, Integer.class);
List<PriceEngineResult> imports = reader.read(f, new PriceEngineResult());
m.worked(2);
if (reader.isError()) {
m.finish();
throw new UserInfoException(reader.getErrors());
}
core.store(imports, "ImportPriceManagementOperation.fromXls()", arranger, m);
return Reply.success(f);
}
Aggregations