5.0 Source Code

Committing 5.0 Source Code
This commit is contained in:
2023-04-06 18:58:04 +01:00
parent 0f3ede77fa
commit 0282345603
1680 changed files with 241310 additions and 0 deletions
@@ -0,0 +1,122 @@
package com.unicenta.pos.ticket;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class TicketInfoTest {
@Test
public void shouldGroupFourOfTheSameProduct() {
TicketInfo ticket = addTwoOfTheSameProduct(null);
Assert.assertEquals(2, ticket.getLinesCount());
runScript(ticket);
Assert.assertEquals(3, ticket.getLinesCount());
TicketInfo updatedTicket = addTwoOfTheSameProduct(ticket);
Assert.assertEquals(5, updatedTicket.getLinesCount());
runScript(updatedTicket);
Assert.assertEquals(6, updatedTicket.getLinesCount());
}
@Test
public void shouldGroupTwoOfTheSameProduct() {
TicketInfo ticket = addTwoOfTheSameProduct(null);
Assert.assertEquals(2, ticket.getLinesCount());
runScript(ticket);
Assert.assertEquals(3, ticket.getLinesCount());
}
@Test
public void shouldGroupDiscountTwoDifferentProducts() {
TicketInfo ticket = twoDifferentProducts();
Assert.assertEquals(2, ticket.getLinesCount());
runScript(ticket);
Assert.assertEquals(3, ticket.getLinesCount());
}
private void runScript(TicketInfo ticket) {
TicketLineInfo line = ticket.getLine(1);
int count = Integer.parseInt(line.getProperty("COUNT", "0"));
Double newPrice1 = new Double(line.getProperty("PRICE", "0"));
String groupName = line.getProperty("GROUP", "0");
int productCount = 0;
int discountsAlreadyApplied = 0;
for (TicketLineInfo ticketLine : ticket.getLines()) {
boolean grouped = groupName.equals(ticketLine.getProperty("GROUP", "0"));
boolean multi = count > 0;
if (multi && grouped) {
productCount++;
}
if (ticketLine.getProductName().contains("Buy")) {
discountsAlreadyApplied = discountsAlreadyApplied + count;
}
}
if (count == (productCount - discountsAlreadyApplied)) {
double newPrice2 = -(line.getPriceTax() * productCount) + newPrice1;
TicketLineInfo updatedTicketLine = new TicketLineInfo("Buy " + productCount + " for £" + (line.getProperty("PRICE")),
line.getProductTaxCategoryID(),
"",
1,
0,
line.getTaxInfo());
ticket.insertLine(ticket.getLinesCount(),updatedTicketLine);
}
}
private TicketInfo twoDifferentProducts() {
TicketInfo ticket = new TicketInfo();
ArrayList<TicketLineInfo> ticketLines = new ArrayList<>();
TaxInfo stdTax = new TaxInfo("1", "STD", "001", null, null, 10, false, 1);
TicketLineInfo ticketLineInfo1 = new TicketLineInfo("1234", "test1", "001", "", 1, 10, stdTax);
ticketLineInfo1.getProductID();
ticketLineInfo1.setProperty("GROUP", "BOGO");
ticketLineInfo1.setProperty("COUNT", "2");
ticketLineInfo1.setProperty("PRICE", "5");
TicketLineInfo ticketLineInfo2 = new TicketLineInfo("1235", "test2", "001", "", 1, 10, stdTax);
ticketLineInfo2.setProperty("GROUP", "BOGO");
ticketLineInfo2.setProperty("COUNT", "2");
ticketLineInfo2.setProperty("PRICE", "5");
ticketLines.add(ticketLineInfo1);
ticketLines.add(ticketLineInfo2);
ticket.setLines(ticketLines);
return ticket;
}
private TicketInfo addTwoOfTheSameProduct(TicketInfo ticket) {
if (ticket == null) {
ticket = new TicketInfo();
}
List<TicketLineInfo> ticketLines = ticket.getLines();
if (ticketLines == null) {
ticketLines = new ArrayList<>();
}
TaxInfo stdTax = new TaxInfo("1", "STD", "001", null, null, 10, false, 1);
TicketLineInfo ticketLineInfo1 = new TicketLineInfo("1234", "test1", "001", "", 1, 10, stdTax);
ticketLineInfo1.getProductID();
ticketLineInfo1.setProperty("GROUP", "BOGO");
ticketLineInfo1.setProperty("COUNT", "2");
ticketLineInfo1.setProperty("PRICE", "5");
ticketLines.add(ticketLineInfo1);
ticketLines.add(ticketLineInfo1);
ticket.setLines(ticketLines);
return ticket;
}
}