/** * Axelor Business Solutions * * Copyright (C) 2016 Axelor (<http://axelor.com>). * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.axelor.apps.sale.web; import java.io.IOException; import org.eclipse.birt.core.exception.BirtException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.axelor.apps.report.engine.ReportSettings; import com.axelor.apps.sale.db.SaleOrder; import com.axelor.apps.sale.db.repo.SaleOrderRepository; import com.axelor.apps.sale.service.SaleOrderService; import com.axelor.exception.AxelorException; import com.axelor.exception.service.TraceBackService; import com.axelor.meta.schema.actions.ActionView; import com.axelor.rpc.ActionRequest; import com.axelor.rpc.ActionResponse; import com.google.inject.Inject; public class SaleOrderController { private final Logger logger = LoggerFactory.getLogger(getClass()); @Inject private SaleOrderService saleOrderService; @Inject private SaleOrderRepository saleOrderRepo; public void compute(ActionRequest request, ActionResponse response) { SaleOrder saleOrder = request.getContext().asType(SaleOrder.class); try { saleOrder = saleOrderService.computeSaleOrder(saleOrder); response.setValues(saleOrder); } catch(Exception e) { TraceBackService.trace(response, e); } } /** * Method that print the sale order as a Pdf * * @param request * @param response * @return * @throws BirtException * @throws IOException */ public void showSaleOrder(ActionRequest request, ActionResponse response) throws AxelorException { SaleOrder saleOrder = request.getContext().asType(SaleOrder.class); String language = saleOrderService.getLanguageForPrinting(saleOrder); String name = saleOrderService.getFileName(saleOrder); String fileLink = saleOrderService.getReportLink(saleOrder, name, language, ReportSettings.FORMAT_PDF); logger.debug("Printing "+name); response.setView(ActionView .define(name) .add("html", fileLink).map()); } public void exportSaleOrderExcel(ActionRequest request, ActionResponse response) throws AxelorException { SaleOrder saleOrder = request.getContext().asType(SaleOrder.class); String language = saleOrderService.getLanguageForPrinting(saleOrder); String name = saleOrderService.getFileName(saleOrder); String fileLink = saleOrderService.getReportLink(saleOrder, name, language, ReportSettings.FORMAT_XLS); logger.debug("Printing "+name); response.setView(ActionView .define(name) .add("html", fileLink).map()); } public void exportSaleOrderWord(ActionRequest request, ActionResponse response) throws AxelorException { SaleOrder saleOrder = request.getContext().asType(SaleOrder.class); String language = saleOrderService.getLanguageForPrinting(saleOrder); String name = saleOrderService.getFileName(saleOrder); String fileLink = saleOrderService.getReportLink(saleOrder, name, language, ReportSettings.FORMAT_DOC); logger.debug("Printing "+name); response.setView(ActionView .define(name) .add("html", fileLink).map()); } public void cancelSaleOrder(ActionRequest request, ActionResponse response) { SaleOrder saleOrder = request.getContext().asType(SaleOrder.class); saleOrderService.cancelSaleOrder(saleOrderRepo.find(saleOrder.getId())); response.setFlash("The sale order was canceled"); response.setCanClose(true); } public void finalizeSaleOrder(ActionRequest request, ActionResponse response) throws Exception { SaleOrder saleOrder = request.getContext().asType(SaleOrder.class); saleOrderService.finalizeSaleOrder(saleOrderRepo.find(saleOrder.getId())); response.setReload(true); } public void confirmSaleOrder(ActionRequest request, ActionResponse response) throws Exception { SaleOrder saleOrder = request.getContext().asType(SaleOrder.class); saleOrderService.confirmSaleOrder(saleOrderRepo.find(saleOrder.getId())); response.setReload(true); } public void generateViewSaleOrder(ActionRequest request, ActionResponse response){ SaleOrder context = request.getContext().asType(SaleOrder.class); context = saleOrderRepo.find(context.getId()); response.setView(ActionView .define("Sale Order") .model(SaleOrder.class.getName()) .add("form", "sale-order-form-wizard") .context("_idCopy", context.getId().toString()) .map()); } public void generateViewTemplate(ActionRequest request, ActionResponse response){ SaleOrder context = request.getContext().asType(SaleOrder.class); context = saleOrderRepo.find(context.getId()); response.setView(ActionView .define("Template") .model(SaleOrder.class.getName()) .add("form", "sale-order-template-form-wizard") .context("_idCopy", context.getId().toString()) .map()); } public void createSaleOrder(ActionRequest request, ActionResponse response) { SaleOrder origin = saleOrderRepo.find(Long.parseLong(request.getContext().get("_idCopy").toString())); SaleOrder copy = saleOrderService.createSaleOrder(origin); response.setValues(copy); } public void createTemplate(ActionRequest request, ActionResponse response) { SaleOrder origin = saleOrderRepo.find(Long.parseLong(request.getContext().get("_idCopy").toString())); SaleOrder copy = saleOrderService.createTemplate(origin); response.setValues(copy); } public void computeEndOfValidityDate(ActionRequest request, ActionResponse response) { SaleOrder saleOrder = request.getContext().asType(SaleOrder.class); try { saleOrder = saleOrderService.computeEndOfValidityDate(saleOrder); response.setValue("endOfValidityDate", saleOrder.getEndOfValidityDate()); } catch(Exception e) { TraceBackService.trace(response, e); } } }