use of com.axelor.apps.account.db.Invoice in project axelor-open-suite by axelor.
the class ClientViewController method showClientMyRefund.
public void showClientMyRefund(ActionRequest request, ActionResponse response) {
try {
ClientViewService clientViewService = Beans.get(ClientViewService.class);
User clientUser = clientViewService.getClientUser();
if (clientUser.getPartner() == null) {
response.setError(I18n.get(ITranslation.CLIENT_PORTAL_NO_PARTNER));
} else {
Filter filter = clientViewService.getRefundOfUser(clientUser).get(0);
if (filter != null) {
response.setView(ActionView.define(I18n.get("My refund")).model(Invoice.class.getName()).add("grid", "invoice-refund-grid").add("form", "invoice-form").param("search-filters", "customer-refunds-filters").domain(filter.getQuery()).map());
}
}
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
use of com.axelor.apps.account.db.Invoice in project axelor-open-suite by axelor.
the class ClientViewController method showClientMyTotalRemaining.
public void showClientMyTotalRemaining(ActionRequest request, ActionResponse response) {
try {
ClientViewService clientViewService = Beans.get(ClientViewService.class);
User clientUser = clientViewService.getClientUser();
if (clientUser.getPartner() == null) {
response.setError(I18n.get(ITranslation.CLIENT_PORTAL_NO_PARTNER));
} else {
Filter filter = clientViewService.getTotalRemainingOfUser(clientUser).get(0);
if (filter != null) {
response.setView(ActionView.define(I18n.get("Total remaining")).model(Invoice.class.getName()).add("grid", "invoice-grid").add("form", "invoice-form").param("search-filters", "customer-invoices-filters").domain(filter.getQuery()).map());
}
}
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
use of com.axelor.apps.account.db.Invoice in project axelor-open-suite by axelor.
the class InvoiceGeneratorContract method createInvoiceHeader.
@Override
protected Invoice createInvoiceHeader() throws AxelorException {
Invoice invoice = super.createInvoiceHeader();
ContractVersion version = contract.getCurrentContractVersion();
if (contract.getIsInvoicingManagement() && version.getIsPeriodicInvoicing()) {
invoice.setOperationSubTypeSelect(InvoiceRepository.OPERATION_SUB_TYPE_CONTRACT_PERIODIC_INVOICE);
invoice.setSubscriptionFromDate(contract.getInvoicePeriodStartDate());
invoice.setSubscriptionToDate(contract.getInvoicePeriodEndDate());
} else if (contract.getEndDate() == null || contract.getEndDate().isAfter(appBaseService.getTodayDate(company))) {
invoice.setOperationSubTypeSelect(InvoiceRepository.OPERATION_SUB_TYPE_CONTRACT_INVOICE);
} else {
invoice.setOperationSubTypeSelect(InvoiceRepository.OPERATION_SUB_TYPE_CONTRACT_CLOSING_INVOICE);
}
invoice.setContract(contract);
if (contract.getInvoicingDate() != null) {
invoice.setInvoiceDate(contract.getInvoicingDate());
} else {
invoice.setInvoiceDate(appBaseService.getTodayDate(company));
}
return invoice;
}
use of com.axelor.apps.account.db.Invoice in project axelor-open-suite by axelor.
the class StockMoveInvoiceController method generateInvoiceConcatInStockMoveCheckMissingFields.
/**
* Called from mass invoicing out stock move form view. Call method to check for missing fields.
* If there are missing fields, show a wizard. Else call {@link
* StockMoveMultiInvoiceService#createInvoiceFromMultiOutgoingStockMove(List)} and show the
* generated invoice.
*
* @param request
* @param response
*/
public void generateInvoiceConcatInStockMoveCheckMissingFields(ActionRequest request, ActionResponse response) {
try {
List<StockMove> stockMoveList = new ArrayList<>();
List<Long> stockMoveIdList = new ArrayList<>();
List<Map> stockMoveMap = (List<Map>) request.getContext().get("supplierStockMoveToInvoice");
for (Map map : stockMoveMap) {
stockMoveIdList.add(Long.valueOf((Integer) map.get("id")));
}
for (Long stockMoveId : stockMoveIdList) {
stockMoveList.add(JPA.em().find(StockMove.class, stockMoveId));
}
Map<String, Object> mapResult = Beans.get(StockMoveMultiInvoiceService.class).areFieldsConflictedToGenerateSupplierInvoice(stockMoveList);
boolean paymentConditionToCheck = (Boolean) mapResult.getOrDefault("paymentConditionToCheck", false);
boolean paymentModeToCheck = (Boolean) mapResult.getOrDefault("paymentModeToCheck", false);
boolean contactPartnerToCheck = (Boolean) mapResult.getOrDefault("contactPartnerToCheck", false);
Partner partner = stockMoveList.get(0).getPartner();
if (paymentConditionToCheck || paymentModeToCheck || contactPartnerToCheck) {
ActionViewBuilder confirmView = ActionView.define("StockMove").model(StockMove.class.getName()).add("form", "stock-move-supplychain-concat-suppl-invoice-confirm-form").param("popup", "true").param("show-toolbar", "false").param("show-confirm", "false").param("popup-save", "false").param("forceEdit", "true");
if (paymentConditionToCheck) {
confirmView.context("contextPaymentConditionToCheck", "true");
} else {
confirmView.context("paymentCondition", mapResult.get("paymentCondition"));
}
if (paymentModeToCheck) {
confirmView.context("contextPaymentModeToCheck", "true");
} else {
confirmView.context("paymentMode", mapResult.get("paymentMode"));
}
if (contactPartnerToCheck) {
confirmView.context("contextContactPartnerToCheck", "true");
confirmView.context("contextPartnerId", partner.getId().toString());
} else {
confirmView.context("contactPartner", mapResult.get("contactPartner"));
}
confirmView.context("supplierStockMoveToInvoice", Joiner.on(",").join(stockMoveIdList));
response.setView(confirmView.map());
} else {
Optional<Invoice> invoice = Beans.get(StockMoveMultiInvoiceService.class).createInvoiceFromMultiIncomingStockMove(stockMoveList);
invoice.ifPresent(inv -> response.setView(ActionView.define("Invoice").model(Invoice.class.getName()).add("grid", "invoice-grid").add("form", "invoice-form").param("search-filters", "customer-invoices-filters").param("forceEdit", "true").context("_showRecord", String.valueOf(inv.getId())).context("_operationTypeSelect", inv.getOperationTypeSelect()).context("todayDate", Beans.get(AppSupplychainService.class).getTodayDate(inv.getCompany())).map()));
}
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
use of com.axelor.apps.account.db.Invoice in project axelor-open-suite by axelor.
the class StockMoveInvoiceController method generateInvoiceConcatInStockMove.
/**
* Called from mass invoicing in stock move confirm view. Get parameters entered by the user, then
* call {@link StockMoveMultiInvoiceService#createInvoiceFromMultiIncomingStockMove(List,
* PaymentCondition, PaymentMode, Partner)} and show the generated invoice.
*
* @param request
* @param response
*/
public void generateInvoiceConcatInStockMove(ActionRequest request, ActionResponse response) {
try {
List<StockMove> stockMoveList = new ArrayList<>();
String stockMoveListStr = (String) request.getContext().get("supplierStockMoveToInvoice");
for (String stockMoveId : stockMoveListStr.split(",")) {
stockMoveList.add(JPA.em().find(StockMove.class, new Long(stockMoveId)));
}
PaymentCondition paymentCondition = null;
PaymentMode paymentMode = null;
Partner contactPartner = null;
if (request.getContext().get("paymentCondition") != null) {
paymentCondition = JPA.em().find(PaymentCondition.class, Long.valueOf((Integer) ((Map) request.getContext().get("paymentCondition")).get("id")));
}
if (request.getContext().get("paymentMode") != null) {
paymentMode = JPA.em().find(PaymentMode.class, Long.valueOf((Integer) ((Map) request.getContext().get("paymentMode")).get("id")));
}
if (request.getContext().get("contactPartner") != null) {
contactPartner = JPA.em().find(Partner.class, Long.valueOf((Integer) ((Map) request.getContext().get("contactPartner")).get("id")));
}
Optional<Invoice> invoice = Beans.get(StockMoveMultiInvoiceService.class).createInvoiceFromMultiIncomingStockMove(stockMoveList, paymentCondition, paymentMode, contactPartner);
invoice.ifPresent(inv -> response.setView(ActionView.define("Invoice").model(Invoice.class.getName()).add("grid", "invoice-grid").add("form", "invoice-form").param("search-filters", "customer-invoices-filters").param("forceEdit", "true").context("_showRecord", String.valueOf(inv.getId())).context("_operationTypeSelect", inv.getOperationTypeSelect()).context("todayDate", Beans.get(AppSupplychainService.class).getTodayDate(inv.getCompany())).map()));
response.setCanClose(true);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
Aggregations