Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <apex:page controller="ForecastByWarehouseController" title="Forecast By Warehouse">
- <script>
- var elementFocus = null;
- function retainFocus()
- {
- document.getElementById(elementFocus.name).focus();
- }
- function JS_QtyChanged(ele)
- {
- console.log(ele);
- console.log(ele.parentNode.parentNode.childNodes);
- var sum = 0;
- var i;
- var nodes=ele.parentNode.parentNode.childNodes;
- for(i in ele.parentNode.parentNode.childNodes)
- {
- console.log(nodes[i].className);
- if(nodes[i].className == "quantityTableCell"){
- var className = nodes[i].childNodes[0].className;
- if((className=="quantityCellRed" || className=="quantityCell"))
- {
- var val = nodes[i].childNodes[0].value;
- console.log(val);
- if(!isNaN(val) && val !='undefined' && val != null && val != '')
- {
- //alert(val);
- sum += parseFloat(val);
- }
- }
- }
- if(nodes[i].className == "quantityTotalCell"){
- oldvalue = parseInt(nodes[i].innerHTML);
- if(oldvalue != sum){
- ele.className = "quantityCellRed";
- }
- var n = sum.toFixed(2);
- nodes[i].innerHTML = n;
- }
- }
- //call_qtyChanged();
- }
- </script>
- <apex:form id="frm">
- <apex:pageblock >
- <apex:pageBlockSection columns="3" title="Select Warehouse">
- <apex:inputField value="{!objProdInventory.gii__Warehouse__c}" label="Warehouse"/>
- <apex:inputField value="{!objForecast.Sales_Year__c}" label="Sales Year"/>
- <apex:commandButton value="Submit" action="{!fetchProducts}" rerender="frm"/>
- </apex:pageBlockSection>
- </apex:pageblock>
- <apex:pageblock id="pb_filter" rendered="{!warehouseSelected }">
- <apex:pageBlockSection columns="3" title="Filter Products">
- <apex:selectList size="1" label="Search By" value="{!strFilterBy}">
- <apex:selectOptions value="{!filterBy}"/>
- </apex:selectList>
- <apex:inputText value="{!searchText}" label="Search Text"/>
- <apex:commandButton value="Search" action="{!searchProducts}" rerender="pb_products"/>
- </apex:pageBlockSection>
- </apex:pageblock>
- <apex:outputpanel id="pb_products" >
- <apex:pageBlock rendered="{!IF(lstProdWrapper.size>0,true,false)}">
- <apex:pageBlockButtons >
- <apex:commandButton value="Delete" action="{!del}"/>
- <apex:commandButton value="Save" action="{!save}"/>
- <apex:commandButton value="Save & Exit" action="{!saveNexit}"/>
- </apex:pageBlockButtons>
- <center>
- <apex:outputPanel layout="block" styleClass="pSearchShowMore" id="otpNav">
- <apex:image url="/img/search_prevarrow_disabled.gif" styleClass="prevArrow" rendered="{!NOT(Con.HasPrevious)}"/>
- <apex:image url="/img/search_prevarrow.gif" title="Previous Page" styleClass="prevArrow" rendered="{!Con.HasPrevious}"/>
- <apex:commandLink action="{!Previous}" title="Previous Page" value="Previous Page" rendered="{!HasPrevious}" reRender="pb_products"/>
- <apex:outputPanel styleClass="pShowLess noLink" style="color:grey" rendered="{!NOT(HasPrevious)}">Previous Page</apex:outputPanel>
- ({!IF(PageNumber == 0,1,(PageNumber * PageSize)+1)}-{!IF(CountTotalRecords != null && CountTotalRecords < PageSize,CountTotalRecords,((PageNumber+1) * PageSize))})
- <apex:outputPanel styleClass="pShowLess noLink" style="color:grey" rendered="{!NOT(HasNext)}" >Next Page</apex:outputPanel>
- <apex:commandLink title="Next Page" value="Next Page" rendered="{!HasNext}" action="{!Next}" reRender="pb_products"/>
- <apex:image url="/img/search_nextarrow.gif" title="Next Page" styleClass="nextArrow" rendered="{!Con.HasNext}"/>
- <apex:image url="/img/search_nextarrow_disabled.gif" rendered="{!NOT(Con.HasNext)}"/>
- </apex:outputPanel>
- </center><br/>
- <apex:outputpanel id="tablevalues" >
- <table style="width:100%">
- <tr>
- <th>{!$Label.Action}</th>
- <th>{!$Label.Forecast_Product_Code}</th>
- <th>{!$Label.Forecast_Product_SKU}</th>
- <apex:repeat value="{!allMonths}" var="month">
- <th align="center">{!month}</th>
- </apex:repeat>
- <th>{!$Label.Forecast_Total}</th>
- </tr>
- <apex:repeat value="{!lstProdWrapper}" var="prod">
- <tr>
- <td><apex:inputCheckbox value="{!prod.checked}"/></td>
- <td width="140px">{!prod.productSKU}</td>
- <td width="80px">{!prod.productCode}</td>
- <apex:variable value="{!0}" var="count"/>
- <apex:repeat value="{!allMonths}" var="mon">
- <td class="quantityTableCell">
- <apex:inputText value="{!prod.monthQty[mon]}" styleClass="{!if(prod.cellEdited[mon],'quantityCellRed','quantityCell')}" onchange="JS_QtyChanged(this)"/>
- </td>
- </apex:repeat>
- <td align="right" padding-top= "2px" class="quantityTotalCell">
- <b><apex:outputText value="{!prod.total}"/></b>
- </td>
- </tr>
- </apex:repeat>
- </table>
- </apex:outputpanel>
- </apex:pageBlock>
- <apex:outputpanel rendered="{!IF(lstProdWrapper.size==0 && warehouseSelected ,true,false)}">
- <apex:pageBlock >
- {!$Label.No_Result_Found}
- </apex:pageBlock>
- </apex:outputpanel>
- </apex:outputpanel>
- </apex:form>
- </apex:page>
- global class ForecastByWarehouseController
- {
- public ApexPages.StandardSetController con{get; set;}
- public List<gii__ProductInventory__c> lstProdInventory{get;set;}
- public gii__ProductInventory__c objProdInventory{get;set;}
- public gii__Warehouse__c objWarehouse{get;set;}
- public Forecast__c objForecast{get;set;}
- public String Searchtext{get;set;}
- public List<ProductWrapper> lstProdWrapper{get;set;}
- public String strFilterBy{get;set;}
- public boolean noResultFound {get;set;}
- public boolean warehouseSelected {get;set;}
- public Integer CountTotalRecords{get;set;}
- public Integer NoOfPages{get;set;}
- public Integer PageSize{get;set;}
- public Integer PageNumber{get;set;}
- public String soql;
- public List<Forecast__c> allForecast;
- public gii__Warehouse__c selectedWarehouse;
- public Sales_Year__c selectSalesYear;
- public List<String> allMonths{get;set;}
- public String filterQueryPart;
- public ForecastByWarehouseController()
- {
- Searchtext = '';
- strFilterBy = '';
- objProdInventory = new gii__ProductInventory__c();
- lstProdInventory = new List<gii__ProductInventory__c>();
- objForecast = new Forecast__c();
- lstProdWrapper = new List<ProductWrapper>();
- PageSize = 10;
- PageNumber = 0;
- warehouseSelected = false;
- allMonths = new List<String>{'January','February','March','April','May','June','July','August','September','October', 'November','December'};
- }
- public List<SelectOption> getFilterBy()
- {
- List<SelectOption> options = new List<SelectOption>();
- options.add(new SelectOption('All','All Products'));
- options.add(new SelectOption('gii__Family__c','Product Family'));
- options.add(new SelectOption('gii__Color__r.name','Color'));
- options.add(new SelectOption('gii__ProductStyle__r.name','Style'));
- options.add(new SelectOption('gii__Size__c','Size'));
- return options;
- }
- public void addFilters()
- {
- system.debug('n--strFilterBy--'+strFilterBy+'n--Constants.STYLEFILTER--'+Constants.STYLEFILTER);
- if((strFilterBy != '' && searchText != '')&& (strFilterBy != 'All') && ((strFilterBy == Constants.STYLEFILTER) || (strFilterBy == Constants.COLORFILTER) || (strFilterBy == Constants.FAMILYFILTER) ))
- {
- filterQueryPart = ' AND gii__Product__r.' + strFilterBy + ' LIKE '%' + searchText + '%'';
- }
- else if((strFilterBy != '' && searchText != '') && (strFilterBy == 'All') )
- {
- filterQueryPart = ' AND gii__Product__r.Name LIKE '%' + searchText + '%'';
- }
- else
- filterQueryPart = '';
- system.debug('n--filterQueryPart--'+filterQueryPart);
- }
- public PageReference searchProducts()
- {
- fetchProducts();
- return null;
- }
- public PageReference fetchProducts()
- {
- PageSize = 10;
- PageNumber = 0;
- warehouseSelected = true;
- selectedWarehouse = [select id,name from gii__Warehouse__c where id=:objProdInventory.gii__Warehouse__c];
- selectSalesYear = [select id,name from Sales_Year__c where id=:objForecast.Sales_Year__c];
- createWrapper();
- return null;
- }
- public void createWrapper()
- {
- lstProdWrapper = new List<ProductWrapper>();
- addFilters();
- system.debug('n--searchText--'+searchText);
- soql = 'Select id,gii__Product__r.gii__ProductStyle__r.name,name,gii__Product__c,gii__Product__r.name,gii__Product__r.gii__ProductCode__c,gii__Warehouse__c from gii__ProductInventory__c where gii__Product__r.gii__Style__c <> true AND gii__Warehouse__c ='' + selectedWarehouse.id + '' ' + filterQueryPart + ' Order By gii__Product__r.gii__ProductStyle__r.name NULLS LAST,gii__Product__r.name limit ' + PageSize + ' offset ' + PageNumber*PageSize;
- String soql4count = 'Select count() from gii__ProductInventory__c where gii__Warehouse__c ='' + selectedWarehouse.id + ''';
- CountTotalRecords= Database.countQuery(soql4count);
- NoOfPages = CountTotalRecords/PageSize;
- if(NoOfPages * PageSize < CountTotalRecords)
- NoOfPages++;
- System.debug(soql);
- lstProdInventory = Database.query(soql);
- allForecast = [select id,Product_Inventory__c,Sales_Year__c, (select id,name,Quantity__c,Month__c from Forecast_Details__r) from Forecast__c where Product_Inventory__c IN: lstProdInventory and Sales_Year__c =: selectSalesYear.id ];
- Decimal totalForecast = 0;
- for(gii__ProductInventory__c pi : lstProdInventory)
- {
- ProductWrapper pw = new ProductWrapper();
- pw.productstyle = pi.gii__Product__r.gii__ProductStyle__r.name;
- pw.monthQty = new Map<String,String>();
- pw.oldMonthQty = new Map<String,String>();
- pw.idMonthQty = new Map<String,String>();
- pw.cellEdited = new Map<String,Boolean>();
- pw.productSKU = pi.gii__Product__r.name;
- pw.productCode = pi.gii__Product__r.gii__ProductCode__c;
- pw.ProForecast = createForecast(pi,selectSalesYear);
- totalForecast = 0;
- for(Forecast_Detail__c fd : pw.ProForecast.Forecast_Details__r)
- {
- pw.monthQty.put(fd.Month__c,String.valueOf(fd.Quantity__c));
- pw.oldMonthQty.put(fd.Month__c,String.valueOf(fd.Quantity__c));
- pw.IdMonthQty.put(fd.Month__c,fd.id);
- system.debug('n--fd.Quantity__c;--'+fd.Quantity__c);
- totalForecast += fd.Quantity__c;
- }
- pw.total = String.valueOf(totalForecast);
- system.debug('n--pw.total--'+pw.total);
- for(integer i=0;i<12;i++)
- {
- if(!pw.monthQty.keyset().contains(allMonths[i]))
- {
- pw.monthQty.put(allMonths[i],'');
- pw.oldMonthQty.put(allMonths[i],'xxx');
- }
- pw.cellEdited.put(allMonths[i],false);
- }
- system.debug('n--pw.total--'+pw.total);
- system.debug('n--SIZEFILTER --'+Constants.SIZEFILTER );
- // case when user do filter by size
- if(strFilterBy == Constants.SIZEFILTER )
- {
- if(!string.isEmpty(Searchtext))
- {
- if(Integer.valueOf(Searchtext) == Integer.valueOf(pw.total))
- {
- lstProdWrapper.add(pw);
- }
- }
- else
- {
- lstProdWrapper.add(pw);
- }
- }
- else
- {
- lstProdWrapper.add(pw);
- }
- }
- lstProdWrapper.sort();
- }
- public Forecast__c createForecast(gii__ProductInventory__c proInv, Sales_Year__c syear)
- {
- for(Forecast__c f : allForecast)
- {
- if(f.Product_Inventory__c == proInv.id && f.Sales_Year__c == syear.id)
- return f;
- }
- Forecast__c fore = new Forecast__c();
- fore.name = proInv.gii__Product__r.name + '-' + proInv.name + '-' + syear.name;
- fore.Product_Inventory__c = proInv.id;
- fore.Sales_Year__c = syear.id;
- fore.Warehouse__c = proInv.gii__Warehouse__c;
- fore.Product_Reference__c = proInv.gii__Product__c;
- insert fore;
- return fore;
- }
- public PageReference save()
- {
- List<Forecast_Detail__c> lstChild = new List<Forecast_Detail__c>();
- for(ProductWrapper objProdWrap : lstProdWrapper)
- {
- for(integer i=0;i<12;i++)
- {
- if(objProdWrap.monthQty.get(allMonths[i]) != null && objProdWrap.monthQty.get(allMonths[i]) != '')
- {
- if(objProdWrap.oldMonthQty.get(allMonths[i]) == 'xxx')
- {
- lstChild.add(new Forecast_Detail__c(name=allMonths[i]+'-'+selectSalesYear.name, Month__c=allMonths[i], Quantity__c=Decimal.valueOf(objProdWrap.monthQty.get(allMonths[i])), Forecast__c=objProdWrap.ProForecast.id));
- }
- else
- {
- lstChild.add(new Forecast_Detail__c(id=objProdWrap.IdMonthQty.get(allMonths[i]),name=allMonths[i]+'-'+selectSalesYear.name, Month__c=allMonths[i], Quantity__c=Decimal.valueOf(objProdWrap.monthQty.get(allMonths[i])), Forecast__c=objProdWrap.ProForecast.id));
- }
- }
- }
- }
- upsert lstChild;
- createWrapper();
- return null;
- }
- public PageReference saveNexit()
- {
- save();
- PageReference pref = new PageReference(Label.Forecast_RetURL);
- return pref;
- }
- global class ProductWrapper implements Comparable
- {
- public string productstyle {get;set;}
- public String productSKU{get;set;}
- public String productCode{get;set;}
- public Forecast__c ProForecast{get;set;}
- public String total{get;set;}
- public Map<String, String> monthQty{get;set;}
- public Map<String, String> oldMonthQty{get;set;}
- public Map<String, Id> IdMonthQty{get;set;}
- public Map<String, Boolean> cellEdited{get;set;}
- public Boolean checked {get;set;}
- public gii__ProductInventory__c emp {get;set;}
- global Integer compareTo(Object compareTo) {
- ProductWrapper compareToEmp = (ProductWrapper)compareTo;
- if (productstyle == compareToEmp.productstyle) return 0;
- if (productstyle > compareToEmp.productstyle) return 1;
- return -1;
- }
- }
- public Boolean hasNext
- {
- get
- {
- return (PageNumber+1)<NoOfPages;
- }
- set;
- }
- public Boolean hasPrevious
- {
- get
- {
- return PageNumber>0;
- }
- set;
- }
- public void previous()
- {
- PageNumber--;
- createWrapper();
- }
- public void next()
- {
- PageNumber++;
- createWrapper();
- }
- public void del() {
- List<gii__ProductInventory__c> listEmpForDel = new List<gii__ProductInventory__c>();
- List<ProductWrapper> listTempWrapper = new List<ProductWrapper>();
- for(ProductWrapper w : lstProdWrapper) {
- if(w.checked) {
- listEmpForDel.add(w.emp);
- } else {
- listTempWrapper.add(w);
- }
- }
- System.debug('++++++++++++Size++++++++++++++++++ :'+listEmpForDel.size());
- System.debug('+++++++++++++++++++++++++++++++++++++++'+listTempWrapper+'n');
- if(listEmpForDel.size() > 0) {
- delete listEmpForDel;
- lstProdWrapper= listTempWrapper;
- } else {
- ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,'Select atleast one Account to delete'));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement