com.accounting.inventory.InventoryStockMBean.java Source code

Java tutorial

Introduction

Here is the source code for com.accounting.inventory.InventoryStockMBean.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.accounting.inventory;

import com.accounting.commonutils.HelperUtil;
import static com.accounting.commonutils.HelperUtil.showFacesMsg;
import com.accounting.dto.ItemTreeDTO;
import com.accounting.entities.inventory.IDetailPropertyValue;
import com.accounting.entities.inventory.IItemCategory;
import com.accounting.entities.inventory.IItemCategoryDatailProperties;
import com.accounting.entities.inventory.IItemCategoryDetail;
import com.accounting.entities.inventory.IItemMaster;
import com.accounting.entities.inventory.IItemMasterProperty;
import com.accounting.entities.inventory.IItemPurchasePropertyValue;
import com.accounting.entities.inventory.IManufacturerDetails;
import com.accounting.entities.inventory.IProductUnit;
import com.accounting.entities.inventory.IPurchaseDetail;
import com.accounting.entities.inventory.ISalesDetail;
import com.accounting.entities.office.Office;
import com.accounting.entities.user.User;
import com.accounting.sessions.inventory.ICategorySession;
import com.accounting.sessions.inventory.IMeasurementUnitSession;
import com.accounting.sessions.inventory.IProductUnitSession;
import com.accounting.sessions.inventory.IPurchaseDetailSession;
import com.accounting.sessions.inventory.ISalesDetailSession;
import com.accounting.sessions.inventory.ItemMasterSession;
import com.accounting.util.JsfUtil;
import com.accounting.utils.KeyConstants;
import com.accounting.utils.NepaliDateConverter;
import com.accounting.utils.PageNameEnum;
import com.accounting.utils.Util;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.util.CellRangeAddress;
import org.primefaces.context.RequestContext;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;
import org.primefaces.model.TreeNode;

/**
 *
 * @author hasmat
 */
@ManagedBean
@SessionScoped
public class InventoryStockMBean {

    @EJB
    private IPurchaseDetailSession iPurchaseDetailSession;
    @EJB
    private ICategorySession icategorySession;
    @EJB
    private IProductUnitSession iProductUnitSession;
    @EJB
    private ItemMasterSession itemMasterSession;
    @EJB
    private ISalesDetailSession iSalesDetailSession;
    @EJB
    private IMeasurementUnitSession iMeasurementUnitSession;
    private List<IProductUnit> productUnitList;
    public List<IManufacturerDetails> manufacturerDetailList;
    private IProductUnit productUnit;
    private IManufacturerDetails imanufacturerDetails;
    private List<IItemCategoryDatailProperties> datailProperties;
    private List<IDetailPropertyValue> propertiesValue;
    private boolean addProperty;
    private List<IItemMasterProperty> masterPropertyList;
    private IItemMasterProperty masterProperty;
    private long productUnitId;
    private IItemCategoryDetail categoryDetailInfo;
    private LazyDataModel itemMasterListLazy;
    private int stage;
    private IItemMaster selectedItemMaster;
    private List<IItemMaster> variantsItemsList;
    private long itemCategoryId;
    private List<IItemCategory> categoryList;
    private List<IItemCategoryDetail> categoryDetailsList;
    private boolean editRender;
    private boolean mainForm;
    private NepaliDateConverter ndc;
    private List<IPurchaseDetail> purchaseDetailsList;

    public InventoryStockMBean() {
    }

    public String redirectToInventoryStock() {
        itemMasterListLazy = new LazyDataModel<IItemMaster>() {
            final int counttotal = itemMasterSession.returnAllParentItemMasterCountByOffice(getLoggedInOffice());

            @Override
            public List<IItemMaster> load(int first, int pageSize, String sortField, SortOrder sortOrder,
                    Map<String, Object> filters) {
                List<IItemMaster> empList = itemMasterSession.returnAllParentItemsByOfficeLazyMode(first, pageSize,
                        filters, getLoggedInOffice());
                this.setRowCount(counttotal);
                return empList;
            }

            @Override
            public IItemMaster getRowData(String omemberIdrowKey) {
                return itemMasterSession.findItemMaster(Long.valueOf(omemberIdrowKey));
            }

            @Override
            public Object getRowKey(IItemMaster object) {
                return object.getId();
            }
        };
        stage = 1;
        mainForm = true;
        categoryList = icategorySession.returnItemCategoryByOffice(getLoggedInOffice().getId());
        productUnitList = iProductUnitSession.retriveIProductUnit(getLoggedInOffice().getId());
        manufacturerDetailList = iMeasurementUnitSession.retrieveManufacturer(getLoggedInOffice().getId());

        HelperUtil.setPageName(PageNameEnum.OUTSTANDINGSTOCK);
        return "/inventoryStock.xhtml?faces-redirect=true";
    }

    //    public void createNewManufacturerClicked() {
    //        imanufacturerDetails = new IManufacturerDetails();
    //        RequestContext.getCurrentInstance().execute("PF('ManufacturerCreateDialog').show();");
    //    }
    //    public void createNewMeasureUnitClicked() {
    //        productUnit = new IProductUnit();
    //        RequestContext.getCurrentInstance().execute("PF('MeasureUnitCreateDialog').show();");
    //    }
    //    public void saveNewMeasureUnit() {
    //
    //        productUnit.setIsDeleted(false);
    //        productUnit.setCreatedBy(getLoggedInUser().getId());
    //        productUnit.setCreatedDate(new Date());
    //        productUnit.setOfficeId(getLoggedInOffice());
    //        int i = iMeasurementUnitSession.returnMaxSubCodeFromIProductUnit();
    //        i = i + 1;
    //        productUnit.setSubCode(i);
    //
    //        iPurchaseDetailSession.persist(productUnit);
    //
    //        productUnitList.add(productUnit);
    //        productUnitId = productUnit.getId();
    //
    //        RequestContext.getCurrentInstance().execute("PF('MeasureUnitCreateDialog').hide();");
    //        JsfUtil.addSuccessMessage("Measure unit create successful.");
    //    }
    //
    //    public void saveNewMaufacturer() {
    //
    //        if (iPurchaseDetailSession.returnManufacturerByName(getLoggedInOffice().getId(), imanufacturerDetails.getName()) != null) {
    //            JsfUtil.addErrorMessage("Name already exists.");
    //            return;
    //        }
    //
    //        imanufacturerDetails.setIsDeleted(false);
    //        imanufacturerDetails.setCreatedBy(getLoggedInUser().getId());
    //        imanufacturerDetails.setCreatedDate(new Date());
    //        imanufacturerDetails.setOfficeId(getLoggedInOffice());
    //        int i = iMeasurementUnitSession.returnMaxSubCodeFromIManufacturer();
    //        i = i + 1;
    //        imanufacturerDetails.setSubCode(i);
    //
    //        iPurchaseDetailSession.persist(imanufacturerDetails);
    //
    //        manufacturerDetailList.add(imanufacturerDetails);
    //        selectedItemMaster.setManufacturerId(imanufacturerDetails);
    //
    //        RequestContext.getCurrentInstance().execute("PF('ManufacturerCreateDialog').hide();");
    //        JsfUtil.addSuccessMessage("Manufacturer create successful.");
    //    }
    private TreeNode root = new DefaultTreeNode();

    public void itemTrackTreeTableSetup(IItemMaster im) {

        root = new DefaultTreeNode("root", null);
        List<IPurchaseDetail> details = iPurchaseDetailSession.returnPurchaseDetailByItem(im.getId(),
                getLoggedInOffice());

        variantsItemsList = itemMasterSession.returnVariantItemMaster(im.getId());
        for (IItemMaster m : variantsItemsList) {
            details.addAll(iPurchaseDetailSession.returnPurchaseDetailByItem(m.getId(), getLoggedInOffice()));
        }

        System.out.println("size " + details.size());

        for (IPurchaseDetail ip : details) {
            ItemTreeDTO it = new ItemTreeDTO();
            itemNameConvert(ip);
            it.setItemName(ip.getItemNameConverted());
            it.setAssociate(ip.getPurchaseHeaderId().getOfficeId().getName());
            it.setPurchaseQty(ip.getPurchaseQty());
            it.setAvailableQty(ip.getAvailableQty());
            it.setPurchaseDate(ip.getPurchaseHeaderId().getPurchaseDateNepali());
            it.setColor("rgb(230, 228, 202)");
            TreeNode mainnode = new DefaultTreeNode(it, root);
            mainnode.setExpanded(true);

            loop1(ip, mainnode);
        }
        stage = 3;
    }

    public void loop1(IPurchaseDetail ip, TreeNode mainNode) {
        List<ISalesDetail> salesList = iSalesDetailSession.getSalesDetailByPurchaseDetailId(ip.getId());
        for (ISalesDetail i : salesList) {
            IPurchaseDetail p = iPurchaseDetailSession.returnPurchaseDetailByRefId(i.getId());
            if (p == null) {
                ItemTreeDTO it = new ItemTreeDTO();
                itemNameConvert(i.getPurchaseDetailId());
                it.setItemName(i.getPurchaseDetailId().getItemNameConverted());
                it.setAssociate(i.getSalesHeaderDetailId().getCustomerId().getAccName());
                it.setPurchaseQty(i.getSalesQty());
                it.setAvailableQty(i.getSalesQty());
                it.setPurchaseDate(i.getSalesHeaderDetailId().getSalesDateNp());
                it.setColor("rgb(241, 241, 241)");
                TreeNode innernode = new DefaultTreeNode(it, mainNode);
                innernode.setExpanded(true);
            } else {
                ItemTreeDTO it = new ItemTreeDTO();
                itemNameConvert(p);
                it.setItemName(p.getItemNameConverted());
                it.setAssociate(p.getPurchaseHeaderId().getOfficeId().getName());
                it.setPurchaseQty(p.getPurchaseQty());
                it.setAvailableQty(p.getAvailableQty());
                it.setPurchaseDate(p.getPurchaseHeaderId().getPurchaseDateNepali());
                it.setColor("rgb(241, 241, 241)");
                TreeNode innernode = new DefaultTreeNode(it, mainNode);
                innernode.setExpanded(true);

                loop1(p, innernode);
            }
        }
    }

    public void itemNameConvert(IPurchaseDetail ip) {
        if (ip != null) {
            if (ip.getParentId() != null) {
                ip.setItemNameConverted(ip.getItemId().getItemName() + " : " + ip.getItemId().getVariantName());
            } else {
                if (ip.getItemType().equals(KeyConstants.NonSerial)) {
                    ip.setItemNameConverted(ip.getItemId().getItemName());
                } else {
                    List<IItemPurchasePropertyValue> temp = itemMasterSession
                            .returnIItemPurchasePropertyValueByPurchaseDetail(ip.getId());
                    if (temp != null && !temp.isEmpty()) {
                        String s = "";
                        for (IItemPurchasePropertyValue i : temp) {
                            s += i.getItemMasterPropertyId().getPropertyName() + "-" + i.getPropertyValue() + ", ";
                        }
                        s = JsfUtil.trimComma(s);
                        ip.setItemNameConverted(ip.getItemId().getItemName() + s);
                    } else {
                        ip.setItemNameConverted(ip.getItemId().getItemName());
                    }
                }
            }
        }
    }

    public void setProperty(IPurchaseDetail ip) {
        if (ip != null) {
            ip.setPropertyValuesList(
                    itemMasterSession.returnIItemPurchasePropertyValueByPurchaseDetail(ip.getId()));
        }
    }

    public void addMasterProperty() {

        if (masterProperty.getPropertyName() != null && !masterProperty.getPropertyName().isEmpty()) {
            if (masterPropertyList != null && !masterPropertyList.isEmpty()) {
                for (IItemMasterProperty mp : masterPropertyList) {
                    if (mp.getPropertyName().equals(masterProperty.getPropertyName())) {
                        JsfUtil.addErrorMessage("Please enter unique property.");
                        return;
                    }
                }
            }
        }

        masterPropertyList.add(masterProperty);
        masterProperty = new IItemMasterProperty();
    }

    public void editMasterProperty(IItemMasterProperty s) {
        masterPropertyList.remove(s);
        masterProperty = s;
    }

    public void removeMasterProperty(IItemMasterProperty s) {

        if (masterPropertyList != null && !masterPropertyList.isEmpty()) {
            Iterator<IItemMasterProperty> it = masterPropertyList.iterator();
            while (it.hasNext()) {
                IItemMasterProperty mp = (IItemMasterProperty) it.next();
                if (mp.getPropertyName().equals(s.getPropertyName())) {
                    it.remove();
                }
            }
        }
    }

    public void postProcessXLS(Object document) {

        ndc = new NepaliDateConverter();
        String start = ndc.convertToNepaliDate(new Date());
        HSSFWorkbook wb = (HSSFWorkbook) document;
        HSSFCellStyle headerCellStyle = wb.createCellStyle();
        HSSFCellStyle headerCellStyle1 = wb.createCellStyle();
        HSSFCellStyle headerCellStyle2 = wb.createCellStyle();

        Font headerFont = wb.createFont();
        headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
        headerFont.setFontName(HSSFFont.FONT_ARIAL);
        headerCellStyle.setFont(headerFont);
        headerCellStyle.setAlignment(CellStyle.ALIGN_CENTER);

        Font headerFont1 = wb.createFont();
        headerFont1.setBoldweight(Font.U_SINGLE_ACCOUNTING);
        headerFont1.setFontName(HSSFFont.FONT_ARIAL);
        headerCellStyle1.setFont(headerFont);
        headerCellStyle1.setAlignment(CellStyle.ALIGN_RIGHT);
        HSSFSheet sheet = wb.getSheetAt(0);
        int noOfColumns = sheet.getRow(0).getLastCellNum();

        Font headerFont3 = wb.createFont();
        headerFont3.setBoldweight(Font.U_SINGLE);
        headerFont3.setFontName(HSSFFont.FONT_ARIAL);
        headerCellStyle2.setFont(headerFont1);
        headerCellStyle2.setAlignment(CellStyle.ALIGN_RIGHT);

        for (int i = 0; i < noOfColumns; i++) {
            sheet.autoSizeColumn(i);
        }
        sheet.shiftRows(0, sheet.getLastRowNum(), 4);

        HSSFRow firstRow = sheet.createRow(0);
        firstRow.createCell(0).setCellValue("Inventory Stock Report");
        firstRow.getCell(0).setCellStyle(headerCellStyle);

        HSSFRow secondRow = sheet.createRow(1);
        secondRow.createCell(0).setCellValue(getLoggedInOffice().getName());
        secondRow.getCell(0).setCellStyle(headerCellStyle);

        HSSFRow thirdRow = sheet.createRow(2);
        String date = ndc.convertToNepaliDate(new Date());
        thirdRow.createCell(0).setCellValue("As of date: " + start);
        thirdRow.getCell(0).setCellStyle(headerCellStyle);

        HSSFRow fourthRow = sheet.createRow(3);
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss a");
        String time = sdf.format(new Date());
        fourthRow.createCell(0)
                .setCellValue("Generated on:" + date + " " + time + " by:" + getLoggedInUser().getName());
        fourthRow.getCell(0).setCellStyle(headerCellStyle2);

        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 6));
        sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 6));
        sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, 6));
        sheet.addMergedRegion(new CellRangeAddress(3, 3, 0, 6));

        HSSFRow lastRow;
    }

    public void submitItemMaster() {

        if (categoryDetailInfo == null) {
            JsfUtil.addErrorMessage("Please select one category detail.");
            return;
        } else if (selectedItemMaster.getItemName() == null || selectedItemMaster.getItemName().isEmpty()) {
            JsfUtil.addErrorMessage("Please select required fields.");
            return;
        } else if (selectedItemMaster.getItemCode() == null || selectedItemMaster.getItemCode().isEmpty()) {
            JsfUtil.addErrorMessage("Please select required fields.");
            return;
        }

        if (itemMasterSession.returnItemCountByItemCode(getLoggedInOffice().getId(),
                selectedItemMaster.getItemCode()) > 0) {
            JsfUtil.addErrorMessage("Sorry, Item Code must be unique.");
            return;
        }

        Pattern r = Pattern.compile("^[a-zA-Z0-9]{3,6}$");
        Matcher m = r.matcher(selectedItemMaster.getItemCode());
        if (!m.matches()) {
            JsfUtil.addErrorMessage("Please enter 3 to 6 digit character or number for item code.");
            return;
        }

        System.out.println("   ------submit item master-------------------------------------------");
        System.out.println("-----item cat id and unit id--" + itemCategoryId + "--" + productUnitId);

        if (itemCategoryId > 0) {
            IItemCategory iCat = icategorySession.findItemCategory(itemCategoryId);
            selectedItemMaster.setOfficeId(getLoggedInOffice());
            selectedItemMaster.setDelFlg(false);
            selectedItemMaster.setCreatedBy(getLoggedInUser().getId());
            selectedItemMaster.setCreatedDate(new Date());
            selectedItemMaster.setAvailableQty(0.0);
            selectedItemMaster.setAccMasterId(iCat.getAccMasterId());
            selectedItemMaster.setItemCategoryDetailId(categoryDetailInfo);
            IItemMaster imaster = itemMasterSession.addIItemMaster(selectedItemMaster);

            for (IDetailPropertyValue pv : propertiesValue) {
                pv.setItemId(imaster.getId());
                itemMasterSession.persist(pv);
            }

            for (IItemMasterProperty property : masterPropertyList) {
                property.setDelFlg(false);
                property.setItemId(imaster.getId());
                itemMasterSession.persist(property);
            }

            showFacesMsg(FacesMessage.SEVERITY_INFO, "Item successfully created.", "");
            mainForm = true;
        } else {
            showFacesMsg(FacesMessage.SEVERITY_ERROR, "Please select required fields.", "");
        }
    }

    public void cancelAddItemMaster() {
        mainForm = true;
    }

    public void createNewItemClicked() {

        editRender = false;
        mainForm = false;
        selectedItemMaster = new IItemMaster();

        addProperty = false;
        productUnitId = 0L;
        itemCategoryId = 0L;
        categoryDetailInfo = null;

        masterProperty = new IItemMasterProperty();
        masterPropertyList = new ArrayList<IItemMasterProperty>();

        propertiesValue = new ArrayList<IDetailPropertyValue>();
        datailProperties = new ArrayList<IItemCategoryDatailProperties>();
        categoryDetailsList = new ArrayList<IItemCategoryDetail>();
    }

    public User getLoggedInUser() {
        User u = (User) Util.getSession().getAttribute("user");
        return u;
    }

    public Office getLoggedInOffice() {
        Office o = (Office) Util.getSession().getAttribute("office");
        return o;
    }

    public void editItemMaster(IItemMaster im) {
        selectedItemMaster = im;
        categoryDetailInfo = im.getItemCategoryDetailId();
        categoryDetailsList = icategorySession.returnCategoryDetailByItemCategoryAndOffice(
                im.getItemCategoryDetailId().getItemCategoryId().getId(), getLoggedInOffice().getId());
        categoryList = icategorySession.returnItemCategoryByOffice(getLoggedInOffice().getId());
        itemCategoryId = im.getItemCategoryDetailId().getItemCategoryId().getId();
        editRender = true;
        mainForm = false;

        propertiesValue = itemMasterSession.retrieveDetailPropertyValue(im.getId());

        masterProperty = new IItemMasterProperty();
        masterPropertyList = itemMasterSession.retrieveItemProperty(im.getId());

        if (masterPropertyList == null || masterPropertyList.isEmpty()) {
            addProperty = false;
        } else {
            addProperty = true;
        }
    }

    public void stockInventoryShowFront() {
        stage = 1;
    }

    public void ajaxCategoryDetailChanges() {
        categoryDetailsList = new ArrayList<IItemCategoryDetail>();
        if (itemCategoryId > 0) {
            categoryDetailsList = icategorySession.returnCategoryDetailByItemCategoryAndOffice(itemCategoryId,
                    getLoggedInOffice().getId());
        }
        if (categoryDetailsList.isEmpty()) {
            JsfUtil.addErrorMessage("No category detail found.");
        }
    }

    public void ajaxDetailProperty() {
        addProperty = false;
        datailProperties = new ArrayList<IItemCategoryDatailProperties>();
        propertiesValue = new ArrayList<IDetailPropertyValue>();

        if (categoryDetailInfo != null) {
            datailProperties = icategorySession.returnDetailProperty(categoryDetailInfo.getId());
        }

        propertiesValue = new ArrayList<IDetailPropertyValue>();
        for (IItemCategoryDatailProperties p : datailProperties) {
            IDetailPropertyValue pv = new IDetailPropertyValue();
            pv.setDelFlg(false);
            pv.setDetailPropertyId(p);
            propertiesValue.add(pv);
        }
    }

    public void updateItemMaster() {

        if (categoryDetailInfo == null) {
            JsfUtil.addErrorMessage("Please select one category detail.");
            return;
        } else if (selectedItemMaster.getItemName() == null || selectedItemMaster.getItemName().isEmpty()) {
            JsfUtil.addErrorMessage("Please select required fields.");
            return;
        } else if (selectedItemMaster.getItemCode() == null || selectedItemMaster.getItemCode().isEmpty()) {
            JsfUtil.addErrorMessage("Please select required fields.");
            return;
        }

        if (icategorySession.returnCountByItemCodeEdit(getLoggedInOffice().getId(),
                selectedItemMaster.getItemCode(), selectedItemMaster.getId()) > 0) {
            JsfUtil.addErrorMessage("Sorry, Item Code must be unique.");
            return;
        }

        Pattern r = Pattern.compile("^[a-zA-Z0-9]{3,6}$");
        Matcher m = r.matcher(selectedItemMaster.getItemCode());
        if (!m.matches()) {
            JsfUtil.addErrorMessage("Please enter 3 to 6 digit character or number for item code.");
            return;
        }

        icategorySession.merge(selectedItemMaster);

        for (IDetailPropertyValue pv : propertiesValue) {
            itemMasterSession.merge(pv);
        }

        itemMasterSession.mergeMasterProperty(selectedItemMaster.getId(), masterPropertyList);

        JsfUtil.addSuccessMessage("Item successfully updated.");
        mainForm = true;
    }

    public void addItemMaster() {

        if (itemMasterSession.returnItemCountByItemCode(getLoggedInOffice().getId(),
                selectedItemMaster.getItemCode()) > 0) {
            JsfUtil.addErrorMessage("Sorry, Item Code must be unique.");
            return;
        }

        Pattern r = Pattern.compile("^[a-zA-Z0-9]{3,6}$");
        Matcher m = r.matcher(selectedItemMaster.getItemCode());
        if (!m.matches()) {
            JsfUtil.addErrorMessage("Please enter 3 to 6 digit character or number for item code.");
            return;
        }

        IItemCategory iCat = icategorySession.findItemCategory(itemCategoryId);
        System.out.println("icat " + iCat);
        selectedItemMaster.setOfficeId(getLoggedInOffice());
        selectedItemMaster.setDelFlg(false);
        selectedItemMaster.setCreatedBy(getLoggedInUser().getId());
        selectedItemMaster.setCreatedDate(new Date());
        selectedItemMaster.setAvailableQty(0.0);
        selectedItemMaster.setAccMasterId(iCat.getAccMasterId());
        icategorySession.persist(selectedItemMaster);

        JsfUtil.addSuccessMessage("Item successfully added.");
        RequestContext.getCurrentInstance().execute("PF('ItemEditDialog').hide();");

    }

    public void viewPurchaseDetailOfItem(IItemMaster im) {

        purchaseDetailsList = iPurchaseDetailSession.returnPurchaseParentAndChildParticularlyByItemId(im.getId());

        if (purchaseDetailsList.isEmpty()) {
            JsfUtil.addErrorMessage("No Record Found.");
            return;
        }
        for (IPurchaseDetail pd : purchaseDetailsList) {
            setProperty(pd);
        }
        stage = 4;
    }

    public void returnVariantByParent(IItemMaster im) {
        if (im.getVariantsCount() == 0) {
            JsfUtil.addErrorMessage("No Variant availabe.");
            return;
        }
        selectedItemMaster = im;
        variantsItemsList = itemMasterSession.returnVariantItemMaster(im.getId());
        stage = 2;
    }

    public long getItemCategoryId() {
        return itemCategoryId;
    }

    public void setItemCategoryId(long itemCategoryId) {
        this.itemCategoryId = itemCategoryId;
    }

    public LazyDataModel getItemMasterListLazy() {
        return itemMasterListLazy;
    }

    public void setItemMasterListLazy(LazyDataModel itemMasterListLazy) {
        this.itemMasterListLazy = itemMasterListLazy;
    }

    public int getStage() {
        return stage;
    }

    public void setStage(int stage) {
        this.stage = stage;
    }

    public IPurchaseDetailSession getiPurchaseDetailSession() {
        return iPurchaseDetailSession;
    }

    public void setiPurchaseDetailSession(IPurchaseDetailSession iPurchaseDetailSession) {
        this.iPurchaseDetailSession = iPurchaseDetailSession;
    }

    public IItemMaster getSelectedItemMaster() {
        return selectedItemMaster;
    }

    public void setSelectedItemMaster(IItemMaster selectedItemMaster) {
        this.selectedItemMaster = selectedItemMaster;
    }

    public List<IItemMaster> getVariantsItemsList() {
        return variantsItemsList;
    }

    public void setVariantsItemsList(List<IItemMaster> variantsItemsList) {
        this.variantsItemsList = variantsItemsList;
    }

    public List<IItemCategory> getCategoryList() {
        return categoryList;
    }

    public void setCategoryList(List<IItemCategory> categoryList) {
        this.categoryList = categoryList;
    }

    public List<IItemCategoryDetail> getCategoryDetailsList() {
        return categoryDetailsList;
    }

    public void setCategoryDetailsList(List<IItemCategoryDetail> categoryDetailsList) {
        this.categoryDetailsList = categoryDetailsList;
    }

    public boolean isEditRender() {
        return editRender;
    }

    public void setEditRender(boolean editRender) {
        this.editRender = editRender;
    }

    public boolean isMainForm() {
        return mainForm;
    }

    public void setMainForm(boolean mainForm) {
        this.mainForm = mainForm;
    }

    public List<IItemCategoryDatailProperties> getDatailProperties() {
        return datailProperties;
    }

    public void setDatailProperties(List<IItemCategoryDatailProperties> datailProperties) {
        this.datailProperties = datailProperties;
    }

    public List<IDetailPropertyValue> getPropertiesValue() {
        return propertiesValue;
    }

    public void setPropertiesValue(List<IDetailPropertyValue> propertiesValue) {
        this.propertiesValue = propertiesValue;
    }

    public boolean isAddProperty() {
        return addProperty;
    }

    public void setAddProperty(boolean addProperty) {
        this.addProperty = addProperty;
    }

    public List<IItemMasterProperty> getMasterPropertyList() {
        return masterPropertyList;
    }

    public void setMasterPropertyList(List<IItemMasterProperty> masterPropertyList) {
        this.masterPropertyList = masterPropertyList;
    }

    public IItemMasterProperty getMasterProperty() {
        return masterProperty;
    }

    public void setMasterProperty(IItemMasterProperty masterProperty) {
        this.masterProperty = masterProperty;
    }

    public long getProductUnitId() {
        return productUnitId;
    }

    public void setProductUnitId(long productUnitId) {
        this.productUnitId = productUnitId;
    }

    public IItemCategoryDetail getCategoryDetailInfo() {
        return categoryDetailInfo;
    }

    public void setCategoryDetailInfo(IItemCategoryDetail categoryDetailInfo) {
        this.categoryDetailInfo = categoryDetailInfo;
    }

    public ICategorySession geticategorySession() {
        return icategorySession;
    }

    public void seticategorySession(ICategorySession icategorySession) {
        this.icategorySession = icategorySession;
    }

    public List<IProductUnit> getProductUnitList() {
        return productUnitList;
    }

    public void setProductUnitList(List<IProductUnit> productUnitList) {
        this.productUnitList = productUnitList;
    }

    public IProductUnit getProductUnit() {
        return productUnit;
    }

    public void setProductUnit(IProductUnit productUnit) {
        this.productUnit = productUnit;
    }

    public List<IManufacturerDetails> getManufacturerDetailList() {
        return manufacturerDetailList;
    }

    public void setManufacturerDetailList(List<IManufacturerDetails> manufacturerDetailList) {
        this.manufacturerDetailList = manufacturerDetailList;
    }

    public IManufacturerDetails getImanufacturerDetails() {
        return imanufacturerDetails;
    }

    public void setImanufacturerDetails(IManufacturerDetails imanufacturerDetails) {
        this.imanufacturerDetails = imanufacturerDetails;
    }

    public TreeNode getRoot() {
        return root;
    }

    public void setRoot(TreeNode root) {
        this.root = root;
    }

    public List<IPurchaseDetail> getPurchaseDetailsList() {
        return purchaseDetailsList;
    }

    public void setPurchaseDetailsList(List<IPurchaseDetail> purchaseDetailsList) {
        this.purchaseDetailsList = purchaseDetailsList;
    }

}