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,13 @@
package com.unicenta;
import com.unicenta.pos.util.FlatLookAndFeel;
import org.junit.Assert;
import org.junit.Test;
public class PackageScanTest {
@Test
public void shouldScanPackage() {
Assert.assertEquals(67, new FlatLookAndFeel().getLafs().size());
}
}
@@ -0,0 +1,39 @@
package com.unicenta.data.loader;
import com.unicenta.plugins.Application;
import com.unicenta.plugins.metrics.Metrics;
import com.unicenta.pos.forms.AppLocal;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
public class StaticSentenceTest {
final static String UPDATE_SQL = "UPDATE closedcash SET DATEEND = {ts '2022-01-20 14:18:09.840'}, NOSALES = 0 WHERE HOST = 'store1' AND MONEY = '932cdfea-1822-4d07-9dc8-a788adeabfec'";
final static String JOIN_SQL = "SELECT T.TICKETID, T.TICKETTYPE, R.DATENEW, P.NAME, C.NAME, SUM(PM.TOTAL), T.STATUS, PM.notes FROM receipts R JOIN tickets T ON R.ID = T.ID LEFT OUTER JOIN payments PM ON R.ID = PM.RECEIPT LEFT OUTER JOIN customers C ON C.ID = T.CUSTOMER LEFT OUTER JOIN people P ON T.PERSON = P.ID WHERE (T.TICKETTYPE = 0 AND R.DATENEW >= R JOIN tickets T ON R.ID = T.ID LEFT OUTER JOIN payments PM ON R.ID = PM.RECEIPT LEFT OUTER JOIN customers C ON C.ID = T.CUSTOMER LEFT OUTER JOIN people P ON T.PERSON = P.ID WHERE (T.TICKETTYPE = 0 AND R.DATENEW >= {ts '2023-02-12 00:00:00.000') GROUP BY T.ID, T.TICKETID, T.TICKETTYPE, R.DATENEW, P.NAME, C.NAME, PM.notes ORDER BY R.DATENEW DESC, T.TICKETID";
Session session;
@Before
public void setup() throws Exception {
session = Mockito.mock(Session.class);
}
@Test
public void shouldConvertUpdateToSQLite() throws Exception {
Mockito.when(session.getURL()).thenReturn("jdbc:sqlite://home/temp/.unicenta/unicentaopos");
StaticSentence staticSentence = new StaticSentence(session, "");
String fixSqliteDate = staticSentence.fixSqliteDate(UPDATE_SQL);
assert !fixSqliteDate.contains("{");
assert fixSqliteDate.contains("UPDATE");
}
@Test
public void shouldConvertJoinToSQLite() throws Exception {
Mockito.when(session.getURL()).thenReturn("jdbc:sqlite://home/temp/.unicenta/unicentaopos");
StaticSentence staticSentence = new StaticSentence(session, "");
String fixSqliteDate = staticSentence.fixSqliteDate(JOIN_SQL);
assert !fixSqliteDate.contains("{");
}
}
@@ -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;
}
}