/*
* Provided by CSTI Consulting
* Following GNU LESSER GENERAL PUBLIC LICENSE
* You may obtain more details at
*
* http://www.csticonsulting.com
* Copyright (c) 2006-2010 Consultation CS-TI inc.
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package com.salesmanager.central.invoice;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import com.opensymphony.xwork2.Preparable;
import com.salesmanager.central.PageBaseAction;
import com.salesmanager.central.profile.Context;
import com.salesmanager.central.profile.ProfileConstants;
import com.salesmanager.central.util.PropertiesHelper;
import com.salesmanager.core.entity.orders.SearchOrderResponse;
import com.salesmanager.core.entity.orders.SearchOrdersCriteria;
import com.salesmanager.core.service.ServiceFactory;
import com.salesmanager.core.service.order.OrderService;
import com.salesmanager.core.util.DateUtil;
import com.salesmanager.core.util.LocaleUtil;
public class InvoiceListAction extends PageBaseAction implements Preparable {
private Logger log = Logger.getLogger(InvoiceListAction.class);
private static Configuration config = PropertiesHelper.getConfiguration();
private Collection invoices;
private SearchOrdersCriteria criteria;
private String invoiceId;
private static int invoicesize = 20;
static {
invoicesize = config.getInt("central.invoicelist.maxsize", 20);
}
public String resetInvoiceList() {
this.criteria = null;
super.getServletRequest().removeAttribute("sdate");
super.getServletRequest().removeAttribute("edate");
return displayInvoiceList();
}
public String displayInvoiceList() {
// for page navigation
String sstartindex = super.getServletRequest().getParameter(
"startindex");
try {
DateUtil dh = new DateUtil();
dh.processPostedDates(super.getServletRequest());
if (criteria == null) {
criteria = new SearchOrdersCriteria();
}
criteria.setSdate(dh.getStartDate());
criteria.setEdate(dh.getEndDate());
if (dh.getStartDate() != null) {
super.getServletRequest().setAttribute("sdate",
DateUtil.formatDate(dh.getStartDate()));
}
if (dh.getEndDate() != null) {
super.getServletRequest().setAttribute("edate",
DateUtil.formatDate(dh.getEndDate()));
}
DateFormat myDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date sDate = null;
Date eDate = null;
try {
if (super.getServletRequest().getParameter("navstartdate") != null) {
if (criteria.getSdate() == null) {
sDate = myDateFormat.parse(super.getServletRequest()
.getParameter("navstartdate"));
}
}
if (super.getServletRequest().getParameter("navenddate") != null) {
if (criteria.getEdate() == null) {
eDate = myDateFormat.parse(super.getServletRequest()
.getParameter("navenddate"));
}
}
criteria.setSdate(sDate);
criteria.setEdate(eDate);
} catch (Exception e) {
log.error(e);
}
if (!StringUtils.isBlank(this.getInvoiceId())) {
try {
long invId = Long.parseLong(this.getInvoiceId());
criteria.setOrderId(invId);
} catch (Exception e) {
log.error("Cannot parse invoiceId " + this.getInvoiceId());
}
}
int startindex = 0;
if (sstartindex != null) {
try {
startindex = Integer.parseInt(sstartindex);
} catch (Exception e) {
log
.error("Did not received the index for page iterator, will reset to 0");
}
}
Context ctx = (Context) super.getServletRequest().getSession()
.getAttribute(ProfileConstants.context);
Integer merchantid = ctx.getMerchantid();
this.setSize(invoicesize);
this.getCriteria().setQuantity(invoicesize);
this.getCriteria().setMerchantId(ctx.getMerchantid());
this.getCriteria().setStartindex(this.getPageStartIndex());
OrderService oservice = (OrderService) ServiceFactory
.getService(ServiceFactory.OrderService);
super.setPageStartNumber();
SearchOrderResponse resp = oservice.searchInvoices(this
.getCriteria());
if (resp != null) {
invoices = resp.getOrders();
super.setListingCount(resp.getCount());
super.setRealCount(resp.getOrders().size());
super.setPageElements();
}
LocaleUtil.setLocaleToEntityCollection(invoices, super.getLocale());
} catch (Exception e) {
log.error(e);
super.setTechnicalMessage();
}
return SUCCESS;
}
public Collection getInvoices() {
return invoices;
}
public void setInvoices(Collection invoices) {
this.invoices = invoices;
}
public String getInvoiceId() {
return invoiceId;
}
public void setInvoiceId(String invoiceId) {
this.invoiceId = invoiceId;
}
public SearchOrdersCriteria getCriteria() {
return criteria;
}
public void setCriteria(SearchOrdersCriteria criteria) {
this.criteria = criteria;
}
public void prepare() throws Exception {
super.setPageTitle("label.invoice.invoicelist.title");
}
}