ItEr54S09AdaptacionServiciosRESTItEr53S10: Added the checkbox 'generate code' to the MaterialCategory edition interface.
Also added the attribute 'generateCode' to the entity to make this value persistent.
This commit is contained in:
parent
17f2005e2d
commit
519c9ca023
5 changed files with 77 additions and 3 deletions
|
|
@ -64,6 +64,8 @@ public class MaterialCategory extends IntegrationEntity {
|
|||
@Valid
|
||||
private Set<Material> materials = new HashSet<Material>();
|
||||
|
||||
private Boolean generateCode = false;
|
||||
|
||||
// Default constructor, needed by Hibernate
|
||||
protected MaterialCategory() {
|
||||
|
||||
|
|
@ -133,6 +135,14 @@ public class MaterialCategory extends IntegrationEntity {
|
|||
materials.remove(material);
|
||||
}
|
||||
|
||||
public void setGenerateCode(Boolean generateCode) {
|
||||
this.generateCode = generateCode;
|
||||
}
|
||||
|
||||
public Boolean getGenerateCode() {
|
||||
return generateCode;
|
||||
}
|
||||
|
||||
@AssertTrue(message="material category name has to be unique. It is already used")
|
||||
public boolean checkConstraintUniqueName() {
|
||||
boolean result;
|
||||
|
|
|
|||
|
|
@ -53,6 +53,8 @@
|
|||
|
||||
<property name="name" />
|
||||
|
||||
<property name="generateCode" not-null="true" />
|
||||
|
||||
<set name="subcategories" inverse="true" cascade="all-delete-orphan">
|
||||
<key column="PARENT_ID"/>
|
||||
<one-to-many class="MaterialCategory"/>
|
||||
|
|
|
|||
|
|
@ -41,12 +41,14 @@ import org.navalplanner.web.common.Util;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.WrongValueException;
|
||||
import org.zkoss.zk.ui.event.CheckEvent;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
import org.zkoss.zk.ui.event.EventListener;
|
||||
import org.zkoss.zk.ui.event.Events;
|
||||
import org.zkoss.zk.ui.event.InputEvent;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
import org.zkoss.zul.Button;
|
||||
import org.zkoss.zul.Checkbox;
|
||||
import org.zkoss.zul.Grid;
|
||||
import org.zkoss.zul.Listbox;
|
||||
import org.zkoss.zul.Listcell;
|
||||
|
|
@ -195,6 +197,39 @@ public class MaterialsController extends
|
|||
}
|
||||
tb.setParent(tc);
|
||||
tc.setParent(tr);
|
||||
|
||||
final Textbox codeTb = new Textbox(materialCategory.getCode());
|
||||
codeTb.setDisabled(materialCategory.getGenerateCode());
|
||||
codeTb.addEventListener("onChange", new EventListener() {
|
||||
@Override
|
||||
public void onEvent(Event event) throws Exception {
|
||||
final InputEvent ie = (InputEvent) event;
|
||||
materialCategory.setCode(ie.getValue());
|
||||
}
|
||||
});
|
||||
Treecell codeTc = new Treecell();
|
||||
codeTb.setParent(codeTc);
|
||||
codeTc.setParent(tr);
|
||||
|
||||
final Checkbox cb = new Checkbox();
|
||||
cb.setChecked(materialCategory.getGenerateCode());
|
||||
cb.addEventListener("onCheck", new EventListener() {
|
||||
@Override
|
||||
public void onEvent(Event event) throws Exception {
|
||||
final CheckEvent ce = (CheckEvent) event;
|
||||
materialCategory.setGenerateCode(ce.isChecked());
|
||||
if(ce.isChecked() && materialCategory.isNewObject()) {
|
||||
materialCategory.setCodeAutogenerated();
|
||||
codeTb.setText(materialCategory.getCode());
|
||||
}
|
||||
codeTb.setDisabled(ce.isChecked());
|
||||
Util.reloadBindings(codeTb);
|
||||
}
|
||||
});
|
||||
Treecell generateCodeTc = new Treecell();
|
||||
cb.setParent(generateCodeTc);
|
||||
generateCodeTc.setParent(tr);
|
||||
|
||||
appendDeleteButton(ti);
|
||||
}
|
||||
}
|
||||
|
|
@ -353,7 +388,12 @@ public class MaterialsController extends
|
|||
final MaterialCategory materialCategory = (MaterialCategory) bean;
|
||||
final Treeitem treeitem = findTreeItemByMaterialCategory(categoriesTree, materialCategory);
|
||||
if (treeitem != null) {
|
||||
throw new WrongValueException(getCategoryTextbox(treeitem), each.getMessage());
|
||||
if(each.getPropertyName().equals("name")) {
|
||||
throw new WrongValueException(getCategoryTextbox(treeitem), each.getMessage());
|
||||
}
|
||||
if(each.getPropertyName().equals("code")) {
|
||||
throw new WrongValueException(getCategoryCodeTextbox(treeitem), each.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -366,6 +406,12 @@ public class MaterialsController extends
|
|||
return (Textbox) treecell.getChildren().get(0);
|
||||
}
|
||||
|
||||
private Textbox getCategoryCodeTextbox(Treeitem treeitem) {
|
||||
final Treerow treerow = (Treerow) treeitem.getChildren().get(0);
|
||||
final Treecell treecell = (Treecell) treerow.getChildren().get(1);
|
||||
return (Textbox) treecell.getChildren().get(0);
|
||||
}
|
||||
|
||||
private boolean locateAndSelectMaterialCategory(MaterialCategory materialCategory) {
|
||||
Treeitem treeitem = findTreeItemByMaterialCategory(categoriesTree, materialCategory);
|
||||
if (treeitem != null) {
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ import java.util.Set;
|
|||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.hibernate.validator.InvalidValue;
|
||||
import org.navalplanner.business.common.daos.IConfigurationDAO;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.materials.daos.IMaterialCategoryDAO;
|
||||
|
|
@ -62,6 +63,9 @@ public class MaterialsModel implements IMaterialsModel {
|
|||
@Autowired
|
||||
IUnitTypeDAO unitTypeDAO;
|
||||
|
||||
@Autowired
|
||||
IConfigurationDAO configurationDAO;
|
||||
|
||||
MutableTreeModel<MaterialCategory> materialCategories = MutableTreeModel
|
||||
.create(MaterialCategory.class);
|
||||
|
||||
|
|
@ -121,10 +125,20 @@ public class MaterialsModel implements IMaterialsModel {
|
|||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly=true)
|
||||
public void addMaterialCategory(MaterialCategory parent, String categoryName) throws ValidationException {
|
||||
Validate.notNull(categoryName);
|
||||
|
||||
MaterialCategory child = MaterialCategory.create(_(categoryName));
|
||||
Boolean generateCode = configurationDAO.getConfiguration().
|
||||
getGenerateCodeForMaterialCategories();
|
||||
MaterialCategory child;
|
||||
if(generateCode) {
|
||||
child = MaterialCategory.create(_(categoryName));
|
||||
}
|
||||
else {
|
||||
child = MaterialCategory.createUnvalidated("", _(categoryName));
|
||||
}
|
||||
child.setGenerateCode(generateCode);
|
||||
|
||||
final MaterialCategory materialCategory = findMaterialCategory(child);
|
||||
if (materialCategory != null) {
|
||||
|
|
|
|||
|
|
@ -60,7 +60,9 @@
|
|||
treeitemRenderer="@{materialsController.materialCategoryRenderer}"
|
||||
onSelect="materialsController.refreshMaterials()">
|
||||
<treecols>
|
||||
<treecol label="Name" />
|
||||
<treecol label="${i18n:_('Name')}" />
|
||||
<treecol label="${i18n:_('Code')}" />
|
||||
<treecol label="${i18n:_('Generate code')}" />
|
||||
<treecol label="" />
|
||||
</treecols>
|
||||
</tree>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue