Skupiny materiálu a služeb lze nyní zadávat pomocí kódu.
Položku lze přidat bez výběru materiálu a služeb. Upraveny styly. closes #138
This commit is contained in:
@@ -131,4 +131,20 @@ public abstract class RequirementSubject implements OwnedDataModel {
|
||||
this.valid = valid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
if (obj != null)
|
||||
{
|
||||
if (obj instanceof RequirementSubject)
|
||||
{
|
||||
RequirementSubject item = (RequirementSubject) obj;
|
||||
|
||||
return (this.getId() == item.getId());
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,5 +4,5 @@ import info.bukova.isspst.data.Requirement;
|
||||
|
||||
public interface RequirementService extends RequirementBaseService<Requirement>
|
||||
{
|
||||
|
||||
public void loadGroups(Requirement req);
|
||||
}
|
||||
|
||||
@@ -2,14 +2,18 @@ package info.bukova.isspst.services.requirement;
|
||||
|
||||
import info.bukova.isspst.Constants;
|
||||
import info.bukova.isspst.data.Requirement;
|
||||
import info.bukova.isspst.data.RequirementItem;
|
||||
import info.bukova.isspst.data.RequirementState;
|
||||
import info.bukova.isspst.data.RequirementSubject;
|
||||
import info.bukova.isspst.data.User;
|
||||
import info.bukova.isspst.data.Workflow;
|
||||
import info.bukova.isspst.services.LazyLoader;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
public class RequirementServiceImpl extends
|
||||
RequirementBaseServiceImpl<Requirement> implements RequirementService,
|
||||
@@ -46,4 +50,53 @@ public class RequirementServiceImpl extends
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Lazy load pro načtení seznamu skupin materiálu nebo služeb do comba.
|
||||
* Ošetřuje se zde případné neexistující vazby na ID smazaných skupin
|
||||
* materiálu nebo služeb.
|
||||
*
|
||||
* @see
|
||||
* info.bukova.isspst.services.requirement.RequirementService#loadGroups
|
||||
* (info.bukova.isspst.data.Requirement)
|
||||
*/
|
||||
@Transactional
|
||||
@LazyLoader("form")
|
||||
@Override
|
||||
public void loadGroups(Requirement req)
|
||||
{
|
||||
if (req == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Requirement reqDb = this.getById(req.getId());
|
||||
|
||||
// Načíst položky požadavku
|
||||
List<RequirementItem> items = reqDb.getItems();
|
||||
|
||||
for (int i = 0; i < items.size(); i++)
|
||||
{
|
||||
RequirementItem item = items.get(i);
|
||||
|
||||
try
|
||||
{
|
||||
// K položce získat skupinu materiálnu nebo služby
|
||||
RequirementSubject subject = item.getReqSubject();
|
||||
// Pokud ID skupiny nebylo nalezeno, padá do výjimky
|
||||
// Pokud ID skupiny bylo nalezeno, přinutí zavolání metody
|
||||
// načíst záznam se skupinou = lazy load
|
||||
subject.getCode();
|
||||
// Zapsat načtená data o skupině
|
||||
item.setReqSubject(subject);
|
||||
}
|
||||
catch (Throwable e)
|
||||
{
|
||||
item.setReqSubject(null);
|
||||
}
|
||||
}
|
||||
|
||||
// Zaktualizovat položky záznamu tak, aby byly odkazy na skupiny
|
||||
// materiálů a služeb konzistentní
|
||||
req.setItems(items);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,34 @@
|
||||
package info.bukova.isspst.ui.main.orders.material;
|
||||
|
||||
import info.bukova.isspst.data.RequirementSubject;
|
||||
import info.bukova.isspst.services.reqsubjects.MaterialService;
|
||||
import info.bukova.isspst.ui.main.orders.requirements.RequirementForm;
|
||||
import info.bukova.isspst.ui.main.orders.services.ReqServicesForm;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.zkoss.bind.annotation.Command;
|
||||
import org.zkoss.bind.annotation.Init;
|
||||
import org.zkoss.zk.ui.Executions;
|
||||
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||
import org.zkoss.zul.Window;
|
||||
|
||||
public class ReqMaterialForm extends RequirementForm
|
||||
{
|
||||
// private final static Logger log =
|
||||
// LoggerFactory.getLogger(ReqServicesForm.class.getName());
|
||||
@SuppressWarnings("unused")
|
||||
private final static Logger log = LoggerFactory.getLogger(ReqServicesForm.class.getName());
|
||||
|
||||
@WireVariable
|
||||
private MaterialService materialService;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Init(superclass = true)
|
||||
public void init()
|
||||
{
|
||||
super.init();
|
||||
// Získat seznam všech skupin materiálu pro výběr z comba
|
||||
this.setRequirementGroups((List<RequirementSubject>) (List<?>) materialService.getAll());
|
||||
}
|
||||
|
||||
@Command
|
||||
|
||||
@@ -38,13 +38,28 @@ public class RequirementForm extends FormViewModel<Requirement>
|
||||
|
||||
@WireVariable
|
||||
private WorkgroupService workgroupService;
|
||||
|
||||
|
||||
@WireVariable
|
||||
private RequirementTypeService reqTypeService;
|
||||
|
||||
|
||||
@WireVariable
|
||||
private RequirementService requirementService;
|
||||
|
||||
/**
|
||||
* Seznam obsahující kód a název skupiny materálu/služby
|
||||
*/
|
||||
private List<RequirementSubject> requirementGroups;
|
||||
|
||||
public List<RequirementSubject> getRequirementGroups()
|
||||
{
|
||||
return requirementGroups;
|
||||
}
|
||||
|
||||
public void setRequirementGroups(List<RequirementSubject> requirementGroups)
|
||||
{
|
||||
this.requirementGroups = requirementGroups;
|
||||
}
|
||||
|
||||
private RequirementItem selectedItem;
|
||||
|
||||
private int selItemIndex;
|
||||
@@ -54,7 +69,7 @@ public class RequirementForm extends FormViewModel<Requirement>
|
||||
private RequirementFormValidator requirementFormValidator;
|
||||
|
||||
private List<RequirementItem> syncItems;
|
||||
|
||||
|
||||
private List<Workgroup> centres;
|
||||
|
||||
public List<Workgroup> getCentres()
|
||||
@@ -101,16 +116,16 @@ public class RequirementForm extends FormViewModel<Requirement>
|
||||
{
|
||||
this.requirementFormValidator = requirementFormValidator;
|
||||
}
|
||||
|
||||
|
||||
@Init(superclass = true)
|
||||
public void init()
|
||||
public void initRequirementForm()
|
||||
{
|
||||
this.setSelItemIndex(-1);
|
||||
this.setBigDecimalConverter(new BigDecimalConverter());
|
||||
this.setRequirementFormValidator(new RequirementFormValidator());
|
||||
this.setSyncItems(this.getDataBean().getItems());
|
||||
requirementService.loadType(getDataBean());
|
||||
this.centres = reqTypeService.filterCentres(getDataBean().getType(), workgroupService.getUserCentres(userService.getCurrent()));
|
||||
this.centres = reqTypeService.filterCentres(getDataBean().getType(), workgroupService.getUserCentres(userService.getCurrent()));
|
||||
}
|
||||
|
||||
public List<RequirementItem> getSyncItems()
|
||||
@@ -123,14 +138,6 @@ public class RequirementForm extends FormViewModel<Requirement>
|
||||
this.syncItems = syncItems;
|
||||
}
|
||||
|
||||
@Command
|
||||
public void addSelectedItem()
|
||||
{
|
||||
// Window window = (Window)
|
||||
// Executions.createComponents("/main/selectItems.zul", null, null);
|
||||
// window.doModal();
|
||||
}
|
||||
|
||||
@Command
|
||||
public void onFocusItem(@BindingParam("item") RequirementItem item, @BindingParam("ctrl") InputElement ctrl)
|
||||
{
|
||||
@@ -230,4 +237,47 @@ public class RequirementForm extends FormViewModel<Requirement>
|
||||
BindUtils.postNotifyChange(null, null, form, "*");
|
||||
}
|
||||
}
|
||||
|
||||
@Command
|
||||
@NotifyChange({ "selectedItem", "syncItems" })
|
||||
public void onChangeGroup()
|
||||
{
|
||||
// Někdo změnil skupinu materiálu nebo služby
|
||||
if (this.selectedItem == null)
|
||||
{
|
||||
log.warn("Zavolat z formuláře onFocus pro nastavení vybrané položky!");
|
||||
return;
|
||||
}
|
||||
|
||||
// Zjistit, zda je propojená skupina materiálu nebo služeb
|
||||
RequirementSubject subject = this.selectedItem.getReqSubject();
|
||||
|
||||
if (subject != null)
|
||||
{
|
||||
// Skupina materiálu nebo služeb je propojená, nastavit k zadanému
|
||||
// kódu i správný název skupiny materiálu nebo služby
|
||||
this.selectedItem.setName(subject.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@Command
|
||||
@NotifyChange({ "selectedItem", "syncItems" })
|
||||
public void addNewItem()
|
||||
{
|
||||
RequirementItem item = new RequirementItem();
|
||||
|
||||
item.setReqSubject(null);
|
||||
|
||||
item.setCode("");
|
||||
item.setName("");
|
||||
item.setQuantity(BigDecimal.valueOf(1));
|
||||
item.setUnitPrice(BigDecimal.valueOf(0));
|
||||
item.setTotal(BigDecimal.valueOf(0));
|
||||
item.setDescription("");
|
||||
item.setMunit(null);
|
||||
|
||||
this.setSelectedItem(item);
|
||||
this.getDataBean().getItems().add(item);
|
||||
this.setSelItemIndex(this.getDataBean().getItems().indexOf(item));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,33 @@
|
||||
package info.bukova.isspst.ui.main.orders.services;
|
||||
|
||||
import info.bukova.isspst.data.RequirementSubject;
|
||||
import info.bukova.isspst.services.reqsubjects.ServiceItemService;
|
||||
import info.bukova.isspst.ui.main.orders.requirements.RequirementForm;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.zkoss.bind.annotation.Command;
|
||||
import org.zkoss.bind.annotation.Init;
|
||||
import org.zkoss.zk.ui.Executions;
|
||||
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||
import org.zkoss.zul.Window;
|
||||
|
||||
public class ReqServicesForm extends RequirementForm
|
||||
{
|
||||
// private final static Logger log =
|
||||
// LoggerFactory.getLogger(ReqServicesForm.class.getName());
|
||||
@SuppressWarnings("unused")
|
||||
private final static Logger log = LoggerFactory.getLogger(ReqServicesForm.class.getName());
|
||||
|
||||
@WireVariable
|
||||
private ServiceItemService serviceItemService;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Init(superclass = true)
|
||||
public void init()
|
||||
{
|
||||
super.init();
|
||||
// Získat seznam všech skupin služeb pro výběr z comba
|
||||
this.setRequirementGroups((List<RequirementSubject>) (List<?>) serviceItemService.getAll());
|
||||
}
|
||||
|
||||
@Command
|
||||
|
||||
Reference in New Issue
Block a user