Commit 788b6bdd by Tuomas Riihimäki

Merge branch 'master' of codecrew.fi:bortal

2 parents 35db1aa9 76da913a
......@@ -38,14 +38,7 @@ import fi.insomnia.bortal.utilities.I18n;
*/
@Stateless
@LocalBean
@DeclareRoles({
BillPermission.S_CREATE_BILL,
BillPermission.S_READ_ALL,
BillPermission.S_VIEW_OWN,
BillPermission.S_WRITE_ALL,
SpecialPermission.S_USER,
SpecialPermission.S_VERKKOMAKSU_CHECK,
})
@DeclareRoles({ BillPermission.S_CREATE_BILL, BillPermission.S_READ_ALL, BillPermission.S_VIEW_OWN, BillPermission.S_WRITE_ALL, SpecialPermission.S_USER, SpecialPermission.S_VERKKOMAKSU_CHECK, })
public class BillBean implements BillBeanLocal {
private static final Logger logger = LoggerFactory.getLogger(BillBean.class);
......@@ -92,7 +85,8 @@ public class BillBean implements BillBeanLocal {
EventUser currentuser = permbean.getCurrentUser();
logger.debug("bill {} user {}", bill, currentuser);
if (bill != null && !currentuser.equals(bill.getUser()) && !permbean.hasPermission(BillPermission.READ_ALL)) {
if (bill != null && !currentuser.equals(bill.getUser())
&& !permbean.hasPermission(BillPermission.READ_ALL)) {
bill = null;
}
return bill;
......@@ -197,26 +191,29 @@ public class BillBean implements BillBeanLocal {
@Override
@RolesAllowed(BillPermission.S_READ_ALL)
public Collection<BillSummary> getBillLineSummary() {
Collection<BillSummary> ret = billLineFacade.getLineSummary(eventbean.getCurrentEvent());
Collection<BillSummary> ret = billLineFacade.getLineSummary(eventbean
.getCurrentEvent());
return ret;
}
@Override
@RolesAllowed({ BillPermission.S_WRITE_ALL, SpecialPermission.S_VERKKOMAKSU_CHECK })
@RolesAllowed({ BillPermission.S_WRITE_ALL,
SpecialPermission.S_VERKKOMAKSU_CHECK })
public void markPaid(Bill bill, Calendar when) {
if (bill.getAccountEvent() != null || bill.getPaidDate() != null)
{
if (bill.getAccountEvent() != null || bill.getPaidDate() != null) {
throw new EJBException("Bill already marked paid!");
}
bill = billFacade.reload(bill);
Product creditproduct = productBean.findCreditProduct();
EventUser user = bill.getUser();
AccountEvent ac = productBean.createAccountEvent(creditproduct, bill.totalPrice(), user);
AccountEvent ac = productBean.createAccountEvent(creditproduct,
bill.totalPrice(), user);
logger.info("Created creditentry. {}, userproducts {}", ac, user.getAccountEvents().size());
logger.info("Created creditentry. {}, userproducts {}", ac, user
.getAccountEvents().size());
ac.setDelivered(when);
ac.setEventTime(when);
......@@ -231,17 +228,24 @@ public class BillBean implements BillBeanLocal {
for (BillLine bl : bill.getBillLines()) {
Product prod = bl.getLineProduct();
if (prod != null
&& prod.getProductFlags().contains(ProductFlag.PREPAID_INSTANT_CREATE)) {
logger.debug("Creating Bill prepaidInstant product {}, {}", prod.getName(), bl.getQuantity());
if (prod.getProductFlags().contains(ProductFlag.RESERVE_PLACE_WHEN_BOUGHT)
|| prod.getProductFlags().contains(ProductFlag.CREATE_NEW_PLACE_WHEN_BOUGHT))
{
placebean.lockPlaceProduct(bill.getUser(), prod, bl.getQuantity());
&& prod.getProductFlags().contains(
ProductFlag.PREPAID_INSTANT_CREATE)) {
logger.debug("Creating Bill prepaidInstant product {}, {}",
prod.getName(), bl.getQuantity());
if (prod.getProductFlags().contains(
ProductFlag.RESERVE_PLACE_WHEN_BOUGHT)
|| prod.getProductFlags().contains(
ProductFlag.CREATE_NEW_PLACE_WHEN_BOUGHT)) {
placebean.lockPlaceProduct(bill.getUser(), prod,
bl.getQuantity());
}
AccountEvent ac2 = productPBean.createAccountEvent(prod, bl.getQuantity(), user, bill.getSentDate());
logger.info("Created ac from product. {}, userproducts {}", ac2, user.getAccountEvents().size());
AccountEvent ac2 = productPBean.createAccountEvent(prod,
bl.getQuantity(), user, bill.getSentDate(), bl.getFoodwave());
logger.info("Created ac from product. {}, userproducts {}",
ac2, user.getAccountEvents().size());
ac2.setSeller(permbean.getCurrentUser());
}
......@@ -249,7 +253,9 @@ public class BillBean implements BillBeanLocal {
}
MailMessage msg = new MailMessage();
msg.setSubject(I18n.get("bill.billMarkedPaidMail.subject"));
msg.setMessage(I18n.get("bill.billMarkedPaidMail.message", (bill.getBillNumber() == null) ? "----" : bill.getBillNumber().toString()));
msg.setMessage(I18n.get("bill.billMarkedPaidMail.message", (bill
.getBillNumber() == null) ? "----" : bill.getBillNumber()
.toString()));
msg.setTo(bill.getUser().getUser());
utilbean.sendMail(msg);
eventUserFacade.flush();
......@@ -259,9 +265,13 @@ public class BillBean implements BillBeanLocal {
@Override
@RolesAllowed({ BillPermission.S_CREATE_BILL, BillPermission.S_WRITE_ALL })
public void createBill(Bill bill) {
if (!permbean.isCurrentUser(bill.getUser()) && !permbean.hasPermission(BillPermission.WRITE_ALL)) {
loggingBean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "Not enought rights to create bill for user ");
throw new EJBAccessException("Could not create bill for another user");
if (!permbean.isCurrentUser(bill.getUser())
&& !permbean.hasPermission(BillPermission.WRITE_ALL)) {
loggingBean.logMessage(SecurityLogType.permissionDenied,
permbean.getCurrentUser(),
"Not enought rights to create bill for user ");
throw new EJBAccessException(
"Could not create bill for another user");
}
billFacade.create(bill);
generateBillNumber(bill);
......@@ -275,9 +285,13 @@ public class BillBean implements BillBeanLocal {
@Override
@RolesAllowed({ BillPermission.S_VIEW_OWN, BillPermission.S_READ_ALL })
public List<Bill> find(EventUser user) {
if (!permbean.isCurrentUser(user) && !permbean.hasPermission(BillPermission.READ_ALL)) {
loggingBean.logMessage(SecurityLogType.permissionDenied, permbean.getCurrentUser(), "Not enought rights to get bill list for user ");
throw new EJBAccessException("Could not list bills for another user");
if (!permbean.isCurrentUser(user)
&& !permbean.hasPermission(BillPermission.READ_ALL)) {
loggingBean.logMessage(SecurityLogType.permissionDenied,
permbean.getCurrentUser(),
"Not enought rights to get bill list for user ");
throw new EJBAccessException(
"Could not list bills for another user");
}
return billFacade.find(user);
}
......
......@@ -18,6 +18,7 @@ import fi.insomnia.bortal.model.AccountEvent;
import fi.insomnia.bortal.model.Discount;
import fi.insomnia.bortal.model.DiscountInstance;
import fi.insomnia.bortal.model.EventUser;
import fi.insomnia.bortal.model.FoodWave;
import fi.insomnia.bortal.model.Product;
/**
......@@ -31,7 +32,8 @@ public class ProductPBean {
private PermissionBean permbean;
@EJB
private AccountEventFacade accounteventfacade;
private static final Logger logger = LoggerFactory.getLogger(ProductPBean.class);
private static final Logger logger = LoggerFactory
.getLogger(ProductPBean.class);
/**
* Default constructor.
......@@ -40,6 +42,11 @@ public class ProductPBean {
// TODO Auto-generated constructor stub
}
public AccountEvent createAccountEvent(Product product,
BigDecimal quantity, EventUser user, Calendar date) {
return this.createAccountEvent(product, quantity, user, date, null);
}
/**
* Creates new AccountEvent from provided product to provided user <br>
* <strong>Notice</strong>, that this function expects the user parameter to
......@@ -56,11 +63,13 @@ public class ProductPBean {
* AccountEvent creation time
* @return The created AccountEvent entity
*/
public AccountEvent createAccountEvent(Product product, BigDecimal quantity, EventUser user, Calendar date) {
public AccountEvent createAccountEvent(Product product,
BigDecimal quantity, EventUser user, Calendar date,
FoodWave foodwave) {
if (!product.getEvent().equals(user.getEvent()))
{
throw new EJBException("Trying to create accountevent for different event in user and product");
if (!product.getEvent().equals(user.getEvent())) {
throw new EJBException(
"Trying to create accountevent for different event in user and product");
}
BigDecimal unitPrice = product.getPrice().negate();
......@@ -69,11 +78,16 @@ public class ProductPBean {
unitPrice = unitPrice.multiply(d.getPercentage());
}
AccountEvent ret = new AccountEvent(user, product, unitPrice, quantity, Calendar.getInstance());
AccountEvent ret = new AccountEvent(user, product, unitPrice, quantity,
Calendar.getInstance());
ret.setDelivered(Calendar.getInstance());
ret.setSeller(permbean.getCurrentUser());
if (foodwave != null) {
ret.setFoodWave(foodwave);
}
List<DiscountInstance> accEventdiscounts = ret.getDiscountInstances();
for (Discount d : discounts) {
// discountsArray.add(discInst);
......
......@@ -14,6 +14,7 @@ import javax.persistence.Lob;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import org.eclipse.persistence.annotations.OptimisticLocking;
......@@ -45,6 +46,7 @@ public class FoodWaveTemplate extends GenericEntity {
private List<Product> products;
@OneToMany(mappedBy = "template")
@OrderBy(value = "time")
private List<FoodWave> foodwaves;
public FoodWaveTemplate() {
......
......@@ -19,7 +19,6 @@
<ui:define name="title">
<h1>#{i18n['user.shop.title']}</h1>
<users:usertabs tabId="foodwave" />
</ui:define>
<ui:define name="content">
Kiitoksia tilauksesta, muista käydä maksamassa tilaukset tiskillä.
......
......@@ -18,8 +18,7 @@
</f:metadata>
<ui:define name="title">
<h1>#{i18n['user.shop.title']}</h1>
<users:usertabs tabId="foodwave" />
<h1>#{i18n['user.shop.title']}</h1>
</ui:define>
<ui:define name="content">
......
......@@ -20,7 +20,6 @@
<ui:define name="title">
<h1>#{i18n['user.foodwave.products.title']}</h1>
<users:usertabs tabId="foodwave" />
</ui:define>
<ui:define name="content">
......
......@@ -12,7 +12,6 @@
<ui:define name="title">
<h1>#{i18n['user.shop.title']}</h1>
<users:usertabs tabId="foodwave" />
</ui:define>
<ui:define name="content">
......
......@@ -77,6 +77,8 @@ billine.vat = VAT
bills.noBills = No bills
card.massprint.title = Print all
cardTemplate.create = Create
cardTemplate.edit = Edit
cardTemplate.id = Id
......@@ -104,6 +106,7 @@ checkout.return.successMessage = Payment confirmed. Your products have been paid
compo.edit = Edit compo
compo.saveVotes = Save votes
compo.savesort = Save order
compo.votesSaved = Votes saved
compofile.download = Download
......@@ -270,6 +273,13 @@ mapView.errorWhenReservingPlace = Error when reserving place!
mapView.errorWhileBuyingPlaces = Error when buying places. Please try again. If error reoccurs please contact organizers.
mapView.notEnoughCreditsToReserve = You don't have enough credits to reserve this place.
menu.item = Item
menu.name = Name
menu.select = Select
menu.sort = Sort
menuitem.navigation.key = Product flag
nasty.user = Go away!
org.hibernate.validator.constraints.Email.message = not a well-formed email address
......@@ -464,16 +474,19 @@ productshop.plusOne = +1
productshop.plusTen = +10
productshop.total = Total
reader.assocToCard = Associate to card
reader.createNewCard = Create new card
reader.description = Description
reader.edit = Edit
reader.identification = Identification
reader.name = Reader name
reader.select = Select reader
reader.tag = Tag
reader.type = Type
reader.user = User
reader.assocToCard = Associate to card
reader.automaticProduct = Default product
reader.automaticProductCount = Amount
reader.createNewCard = Create new card
reader.description = Description
reader.edit = Edit
reader.identification = Identification
reader.name = Reader name
reader.save = Save
reader.select = Select reader
reader.tag = Tag
reader.type = Type
reader.user = User
readerView.searchforuser = Search user
......@@ -606,12 +619,12 @@ submenu.voting.myEntries = My entries
supernavi.admin = Adminview
supernavi.user = Userview
svm.failure.errorMessage = Payment error.
svm.failure.successMessage = Payment error successfull\u2026 ( Possibly already marked paid )
svm.pending.errorMessage = Unknown error! If payment was successfull email will be sent after verification.
svm.pending.successMessage = Payment pending. You will receive email after payment verification.
svm.success.errorMessage = Payment could not be verified!
svm.success.successMessage = Payment was successfull. You can now your credits in the system.
svm.failure.errorMessage = Payment error.
svm.failure.successMessage = Payment error successfull\u2026 ( Possibly already marked paid )
svm.pending.errorMessage = Unknown error! If payment was successfull email will be sent after verification.
svm.pending.successMessage = Payment pending. You will receive email after payment verification.
svm.success.errorMessage = Payment could not be verified!
svm.success.successMessage = Payment was successfull. You can now your credits in the system.
template.loggedInAs = Logged in as:
......
......@@ -75,6 +75,8 @@ billine.vat = ALV
bills.noBills = Ei laskuja
card.massprint.title = Tulosta kaikki
cardTemplate.create = Luo
cardTemplate.edit = Muokkaa
cardTemplate.id = Id
......@@ -102,6 +104,7 @@ checkout.return.successMessage = Maksu vahvistettu. Tuotteet on maksettu ja voit
compo.edit = Muokkaa compoa
compo.saveVotes = Tallenna \u00E4\u00E4net
compo.savesort = Tallenna j\u00E4rjestys
compo.votesSaved = \u00C4\u00E4net tallennettu
compofile.download = lataa
......@@ -277,11 +280,14 @@ mapView.errorWhenReservingPlace = Paikkaa varatessa tapahtui virhe.
mapView.errorWhileBuyingPlaces = Virhe paikkojen ostossa. Ole hyv\u00E4 ja yrit\u00E4 uudelleen. Jos virhe toistuu ota yhteytt\u00E4 j\u00E4rjest\u00E4jiin.
mapView.notEnoughCreditsToReserve = Sinulla ei ole riitt\u00E4v\u00E4sti suoritettuja konepaikkamaksuja t\u00E4m\u00E4n paikan varaamiseen.
menu.index = Etusivu
menu.place.placemap = Paikkakartta
menu.poll.index = Kyselyt
menu.shop.createBill = Kauppa
menu.user.edit = Omat tiedot
menu.index = Etusivu
menu.name = Nimi
menu.place.placemap = Paikkakartta
menu.poll.index = Kyselyt
menu.select = Valitse
menu.shop.createBill = Kauppa
menu.sort = J\u00E4rjest\u00E4
menu.user.edit = Omat tiedot
news.abstract = Lyhennelm\u00E4
news.expire = Lopeta julkaisu
......@@ -452,16 +458,19 @@ productshop.plusOne = +1
productshop.plusTen = +10
productshop.total = Yhteens\u00E4
reader.assocToCard = Yhdist\u00E4 korttiin
reader.createNewCard = Luo uusi kortti
reader.description = Kuvaus
reader.edit = Muokkaa
reader.identification = Tunniste
reader.name = Lukijan nimi
reader.select = Valitse lukija
reader.tag = Tag
reader.type = Tyyppi
reader.user = K\u00E4ytt\u00E4j\u00E4
reader.assocToCard = Yhdist\u00E4 korttiin
reader.automaticProduct = Oletustuote
reader.automaticProductCount = M\u00E4\u00E4r\u00E4
reader.createNewCard = Luo uusi kortti
reader.description = Kuvaus
reader.edit = Muokkaa
reader.identification = Tunniste
reader.name = Lukijan nimi
reader.save = Tallenna
reader.select = Valitse lukija
reader.tag = Tag
reader.type = Tyyppi
reader.user = K\u00E4ytt\u00E4j\u00E4
readerView.searchforuser = Etsi k\u00E4ytt\u00E4j\u00E4\u00E4
......@@ -593,12 +602,12 @@ submenu.voting.myEntries = Omat entryt
supernavi.admin = Yll\u00E4piton\u00E4kym\u00E4
supernavi.user = K\u00E4ytt\u00E4j\u00E4n\u00E4kym\u00E4
svm.failure.errorMessage = Verkkomaksuvirhe.
svm.failure.successMessage = Maksuvirhe onnistunut. ( Maksu mahdollisesti merkitty jo maksetuksi )
svm.pending.errorMessage = Maksukuittausta odotetaan. Kuittauksesta l\u00E4hetet\u00E4\u00E4n ilmoitus s\u00E4hk\u00F6postitse.
svm.pending.successMessage = Maksukuittausta odotetaan. Kuittauksesta l\u00E4hetet\u00E4\u00E4n ilmoitus s\u00E4hk\u00F6postitse.
svm.success.errorMessage = Verkkomaksua ei voitu verifioida! Virheest\u00E4 on raportoitu eteenp\u00E4in.
svm.success.successMessage = Verkkomaksu onnistui.
svm.failure.errorMessage = Verkkomaksuvirhe.
svm.failure.successMessage = Maksuvirhe onnistunut. ( Maksu mahdollisesti merkitty jo maksetuksi )
svm.pending.errorMessage = Maksukuittausta odotetaan. Kuittauksesta l\u00E4hetet\u00E4\u00E4n ilmoitus s\u00E4hk\u00F6postitse.
svm.pending.successMessage = Maksukuittausta odotetaan. Kuittauksesta l\u00E4hetet\u00E4\u00E4n ilmoitus s\u00E4hk\u00F6postitse.
svm.success.errorMessage = Verkkomaksua ei voitu verifioida! Virheest\u00E4 on raportoitu eteenp\u00E4in.
svm.success.successMessage = Verkkomaksu onnistui.
template.loggedInAs = Kirjautunut tunnuksella:
......
......@@ -26,6 +26,7 @@ public class FoodShopView extends GenericCDIView {
private static final long serialVersionUID = 1288114954999406683L;
@Inject
@SelectedUser
private EventUser user;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!