First commit waiting for Budget Alert
This commit is contained in:
@ -0,0 +1,17 @@
|
||||
apply plugin: "com.axelor.app-module"
|
||||
|
||||
apply from: "../version.gradle"
|
||||
|
||||
apply {
|
||||
version = openSuiteVersion
|
||||
}
|
||||
|
||||
axelor {
|
||||
title "Axelor Cash Management"
|
||||
description "Axelor Cash Management Module"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile project(":modules:axelor-human-resource")
|
||||
compile project(":modules:axelor-supplychain")
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 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.cash.management.db.repo;
|
||||
|
||||
import com.axelor.apps.base.db.Company;
|
||||
import com.axelor.apps.base.db.repo.SequenceRepository;
|
||||
import com.axelor.apps.base.service.administration.SequenceService;
|
||||
import com.axelor.apps.cash.management.db.ForecastRecap;
|
||||
import com.axelor.apps.cash.management.exception.IExceptionMessage;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import java.math.BigDecimal;
|
||||
import javax.persistence.PersistenceException;
|
||||
|
||||
public class CashManagementForecastRecapRepository extends ForecastRecapRepository {
|
||||
|
||||
@Override
|
||||
public ForecastRecap save(ForecastRecap entity) {
|
||||
|
||||
try {
|
||||
|
||||
if (entity.getForecastRecapSeq() == null) {
|
||||
Company company = entity.getCompany();
|
||||
|
||||
String sequence =
|
||||
Beans.get(SequenceService.class)
|
||||
.getSequenceNumber(SequenceRepository.FORECAST_RECAP_SEQUENCE, company);
|
||||
|
||||
if (sequence == null) {
|
||||
throw new AxelorException(
|
||||
company,
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.FORCAST_RECAP_SEQUENCE_ERROR),
|
||||
company.getName());
|
||||
|
||||
} else {
|
||||
entity.setForecastRecapSeq(sequence);
|
||||
}
|
||||
}
|
||||
|
||||
return super.save(entity);
|
||||
} catch (AxelorException e) {
|
||||
throw new PersistenceException(e.getLocalizedMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ForecastRecap copy(ForecastRecap entity, boolean deep) {
|
||||
|
||||
ForecastRecap copy = super.copy(entity, deep);
|
||||
|
||||
copy.clearForecastRecapLineList();
|
||||
copy.setCalculationDate(null);
|
||||
copy.setForecastRecapSeq(null);
|
||||
copy.setEndingBalance(BigDecimal.ZERO);
|
||||
return copy;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 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.cash.management.exception;
|
||||
|
||||
public interface IExceptionMessage {
|
||||
|
||||
static final String FORECAST_COMPANY = /*$$(*/ "Please select a company" /*)*/;
|
||||
static final String FORCAST_RECAP_SEQUENCE_ERROR = /*$$(*/
|
||||
"The company %s doesn't have any configured sequence for ForcastRecap" /*)*/;
|
||||
}
|
||||
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 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.cash.management.module;
|
||||
|
||||
import com.axelor.app.AxelorModule;
|
||||
import com.axelor.apps.cash.management.db.repo.CashManagementForecastRecapRepository;
|
||||
import com.axelor.apps.cash.management.db.repo.ForecastRecapRepository;
|
||||
|
||||
public class CashManagementModule extends AxelorModule {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(ForecastRecapRepository.class).to(CashManagementForecastRecapRepository.class);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 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.cash.management.report;
|
||||
|
||||
public interface IReport {
|
||||
|
||||
public static final String FORECAST_RECAP = "ForecastRecap.rptdesign";
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 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.cash.management.report;
|
||||
|
||||
public interface ITranslation {
|
||||
|
||||
public static final String FORECAST_RECAP_TITLE = /*$$(*/ "ForecastRecap.title"; /*)*/
|
||||
public static final String FORECAST_RECAP_OPPORTUNITIES_TYPE_NO = /*$$(*/
|
||||
"ForecastOpportunitiesType.no"; /*)*/
|
||||
public static final String FORECAST_RECAP_OPPORTUNITIES_TYPE_BASE = /*$$(*/
|
||||
"ForecastOpportunitiesType.base"; /*)*/
|
||||
public static final String FORECAST_RECAP_OPPORTUNITIES_TYPE_WORST = /*$$(*/
|
||||
"ForecastOpportunitiesType.worst"; /*)*/
|
||||
public static final String FORECAST_RECAP_OPPORTUNITIES_TYPE_BEST = /*$$(*/
|
||||
"ForecastOpportunitiesType.best"; /*)*/
|
||||
public static final String FORECAST_RECAP_LINE_TYPE_IN = /*$$(*/ "ForecastLineType.in"; /*)*/
|
||||
public static final String FORECAST_RECAP_LINE_TYPE_OUT = /*$$(*/ "ForecastLineType.out"; /*)*/
|
||||
public static final String FORECAST_RECAP_COMPANY = /*$$(*/ "ForecastRecap.company"; /*)*/
|
||||
public static final String FORECAST_RECAP_CALCULATION_DATE = /*$$(*/
|
||||
"ForecastRecap.calculationDate"; /*)*/
|
||||
public static final String FORECAST_RECAP_OPPORTUNITIES_TYPE = /*$$(*/
|
||||
"ForecastRecap.opportunitiesTypeSelect"; /*)*/
|
||||
public static final String FORECAST_RECAP_CURRENCY = /*$$(*/ "ForecastRecap.currency"; /*)*/
|
||||
public static final String FORECAST_RECAP_FROM_DATE = /*$$(*/ "ForecastRecap.fromDate"; /*)*/
|
||||
public static final String FORECAST_RECAP_STARTING_BALANCE = /*$$(*/
|
||||
"ForecastRecap.startingBalance"; /*)*/
|
||||
public static final String FORECAST_RECAP_BANK_DETAILS = /*$$(*/
|
||||
"ForecastRecap.bankDetailsIban"; /*)*/
|
||||
public static final String FORECAST_RECAP_TO_DATE = /*$$(*/ "ForecastRecap.toDate"; /*)*/
|
||||
public static final String FORECAST_RECAP_ENDING_BALANCE = /*$$(*/
|
||||
"ForecastRecap.endingBalance"; /*)*/
|
||||
public static final String FORECAST_RECAP_OPERATION_DETAILS = /*$$(*/
|
||||
"ForecastRecap.operationDetails"; /*)*/
|
||||
public static final String FORECAST_RECAP_LINE_ESTIMATED_DATE = /*$$(*/
|
||||
"ForecastLine.estimatedDate"; /*)*/
|
||||
public static final String FORECAST_RECAP_LINE_TYPE = /*$$(*/ "ForecastLine.type"; /*)*/
|
||||
public static final String FORECAST_RECAP_LINE_RELATED_TO_NAME = /*$$(*/
|
||||
"ForecastLine.relatedToName"; /*)*/
|
||||
public static final String FORECAST_RECAP_LINE_AMOUNT = /*$$(*/ "ForecastLine.amount"; /*)*/
|
||||
public static final String FORECAST_RECAP_LINE_BALANCE = /*$$(*/ "ForecastLine.balance"; /*)*/
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,101 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 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.cash.management.service;
|
||||
|
||||
import com.axelor.apps.base.db.BankDetails;
|
||||
import com.axelor.apps.base.db.Company;
|
||||
import com.axelor.apps.base.service.app.AppBaseService;
|
||||
import com.axelor.apps.cash.management.db.Forecast;
|
||||
import com.axelor.apps.cash.management.db.ForecastGenerator;
|
||||
import com.axelor.apps.cash.management.db.ForecastReason;
|
||||
import com.axelor.apps.cash.management.db.repo.ForecastRepository;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
public class ForecastService {
|
||||
|
||||
@Inject protected AppBaseService appBaseService;
|
||||
@Inject protected ForecastRepository forecastRepo;
|
||||
|
||||
@Transactional
|
||||
public void generate(ForecastGenerator forecastGenerator) {
|
||||
LocalDate fromDate = forecastGenerator.getFromDate();
|
||||
LocalDate toDate = forecastGenerator.getToDate();
|
||||
LocalDate itDate = LocalDate.parse(fromDate.toString(), DateTimeFormatter.ISO_DATE);
|
||||
int count = 0;
|
||||
|
||||
this.reset(forecastGenerator);
|
||||
|
||||
while (!itDate.isAfter(toDate)) {
|
||||
Forecast forecast =
|
||||
this.createForecast(
|
||||
forecastGenerator,
|
||||
forecastGenerator.getCompany(),
|
||||
forecastGenerator.getBankDetails(),
|
||||
forecastGenerator.getTypeSelect(),
|
||||
forecastGenerator.getAmount(),
|
||||
itDate,
|
||||
forecastGenerator.getForecastReason(),
|
||||
forecastGenerator.getComments(),
|
||||
forecastGenerator.getRealizedSelect());
|
||||
forecastRepo.save(forecast);
|
||||
itDate = fromDate.plusMonths(++count * forecastGenerator.getPeriodicitySelect());
|
||||
}
|
||||
}
|
||||
|
||||
public Forecast createForecast(
|
||||
ForecastGenerator forecastGenerator,
|
||||
Company company,
|
||||
BankDetails bankDetails,
|
||||
int typeSelect,
|
||||
BigDecimal amount,
|
||||
LocalDate estimatedDate,
|
||||
ForecastReason reason,
|
||||
String comments,
|
||||
int realizedSelect) {
|
||||
|
||||
Forecast forecast = new Forecast();
|
||||
forecast.setForecastGenerator(forecastGenerator);
|
||||
forecast.setCompany(company);
|
||||
forecast.setBankDetails(bankDetails);
|
||||
forecast.setTypeSelect(typeSelect);
|
||||
forecast.setAmount(amount);
|
||||
forecast.setEstimatedDate(estimatedDate);
|
||||
forecast.setForecastReason(reason);
|
||||
forecast.setComments(comments);
|
||||
forecast.setRealizedSelect(realizedSelect);
|
||||
|
||||
return forecast;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void reset(ForecastGenerator forecastGenerator) {
|
||||
forecastRepo
|
||||
.all()
|
||||
.filter(
|
||||
"self.forecastGenerator = ? AND (self.realizedSelect = ? OR (self.realizedSelect = ? AND self.estimatedDate > ?))",
|
||||
forecastGenerator,
|
||||
ForecastRepository.REALISED_SELECT_NO,
|
||||
ForecastRepository.REALISED_SELECT_AUTO,
|
||||
appBaseService.getTodayDate())
|
||||
.remove();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 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.cash.management.translation;
|
||||
|
||||
public interface ITranslation {
|
||||
|
||||
public static final String CASH_MANAGEMENT_APP_NAME = /*$$(*/ "value:Cash management"; /*)*/
|
||||
public static final String CASH_MANAGEMENT_REPORT_TITLE = /*$$(*/ "ForecastRecap"; /*)*/
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 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.cash.management.web;
|
||||
|
||||
import com.axelor.apps.cash.management.db.ForecastGenerator;
|
||||
import com.axelor.apps.cash.management.db.repo.ForecastGeneratorRepository;
|
||||
import com.axelor.apps.cash.management.service.ForecastService;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
|
||||
public class ForecastController {
|
||||
|
||||
public void generate(ActionRequest request, ActionResponse response) {
|
||||
ForecastGenerator forecastGenerator = request.getContext().asType(ForecastGenerator.class);
|
||||
forecastGenerator =
|
||||
Beans.get(ForecastGeneratorRepository.class).find(forecastGenerator.getId());
|
||||
Beans.get(ForecastService.class).generate(forecastGenerator);
|
||||
response.setReload(true);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,191 @@
|
||||
/*
|
||||
* Axelor Business Solutions
|
||||
*
|
||||
* Copyright (C) 2019 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.cash.management.web;
|
||||
|
||||
import com.axelor.apps.cash.management.db.ForecastRecap;
|
||||
import com.axelor.apps.cash.management.db.ForecastRecapLine;
|
||||
import com.axelor.apps.cash.management.db.repo.ForecastRecapRepository;
|
||||
import com.axelor.apps.cash.management.exception.IExceptionMessage;
|
||||
import com.axelor.apps.cash.management.service.ForecastRecapService;
|
||||
import com.axelor.apps.cash.management.translation.ITranslation;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.meta.schema.actions.ActionView;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.axelor.rpc.Context;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class ForecastRecapController {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
||||
|
||||
public void populate(ActionRequest request, ActionResponse response) throws AxelorException {
|
||||
ForecastRecap forecastRecap = request.getContext().asType(ForecastRecap.class);
|
||||
if (forecastRecap.getCompany() == null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.FORECAST_COMPANY));
|
||||
}
|
||||
Beans.get(ForecastRecapService.class)
|
||||
.populate(Beans.get(ForecastRecapRepository.class).find(forecastRecap.getId()));
|
||||
response.setReload(true);
|
||||
}
|
||||
|
||||
public void sales(ActionRequest request, ActionResponse response) throws AxelorException {
|
||||
Long id = new Long(request.getContext().get("_id").toString());
|
||||
ForecastRecapService forecastRecapService = Beans.get(ForecastRecapService.class);
|
||||
ForecastRecap forecastRecap = Beans.get(ForecastRecapRepository.class).find(id);
|
||||
forecastRecap.setForecastRecapLineList(new ArrayList<ForecastRecapLine>());
|
||||
Map<LocalDate, BigDecimal> mapExpected = new HashMap<LocalDate, BigDecimal>();
|
||||
Map<LocalDate, BigDecimal> mapConfirmed = new HashMap<LocalDate, BigDecimal>();
|
||||
if (forecastRecap.getOpportunitiesTypeSelect() != null
|
||||
&& forecastRecap.getOpportunitiesTypeSelect()
|
||||
> ForecastRecapRepository.OPPORTUNITY_TYPE_NO) {
|
||||
forecastRecapService.getOpportunities(forecastRecap, mapExpected, mapConfirmed);
|
||||
}
|
||||
forecastRecapService.getInvoices(forecastRecap, mapExpected, mapConfirmed);
|
||||
forecastRecapService.getTimetablesOrOrders(forecastRecap, mapExpected, mapConfirmed);
|
||||
forecastRecapService.getForecasts(forecastRecap, mapExpected, mapConfirmed);
|
||||
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
|
||||
Set<LocalDate> keyList = mapExpected.keySet();
|
||||
for (LocalDate date : keyList) {
|
||||
Map<String, Object> dataMap = new HashMap<String, Object>();
|
||||
dataMap.put("date", (Object) date);
|
||||
dataMap.put("amount", (Object) mapExpected.get(date));
|
||||
dataMap.put("type", (Object) I18n.get("Expected"));
|
||||
dataList.add(dataMap);
|
||||
}
|
||||
keyList = mapConfirmed.keySet();
|
||||
for (LocalDate date : keyList) {
|
||||
Map<String, Object> dataMap = new HashMap<String, Object>();
|
||||
dataMap.put("date", (Object) date);
|
||||
dataMap.put("amount", (Object) mapConfirmed.get(date));
|
||||
dataMap.put("type", (Object) I18n.get("Confirmed"));
|
||||
dataList.add(dataMap);
|
||||
}
|
||||
response.setData(dataList);
|
||||
}
|
||||
|
||||
public void spending(ActionRequest request, ActionResponse response) throws AxelorException {
|
||||
Long id = new Long(request.getContext().get("_id").toString());
|
||||
ForecastRecapService forecastRecapService = Beans.get(ForecastRecapService.class);
|
||||
ForecastRecap forecastRecap = Beans.get(ForecastRecapRepository.class).find(id);
|
||||
forecastRecap.setForecastRecapLineList(new ArrayList<ForecastRecapLine>());
|
||||
|
||||
forecastRecapService.populateWithTimetablesOrOrders(forecastRecap);
|
||||
forecastRecapService.populateWithExpenses(forecastRecap);
|
||||
forecastRecapService.populateWithSalaries(forecastRecap);
|
||||
forecastRecapService.populateWithForecastsNoSave(forecastRecap);
|
||||
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
|
||||
Map<LocalDate, BigDecimal> map = new HashMap<LocalDate, BigDecimal>();
|
||||
for (ForecastRecapLine forecastRecapLine : forecastRecap.getForecastRecapLineList()) {
|
||||
if (forecastRecapLine.getTypeSelect() == 2) {
|
||||
if (map.containsKey(forecastRecapLine.getEstimatedDate())) {
|
||||
map.put(
|
||||
forecastRecapLine.getEstimatedDate(),
|
||||
map.get(forecastRecapLine.getEstimatedDate()).add(forecastRecapLine.getAmount()));
|
||||
} else {
|
||||
map.put(forecastRecapLine.getEstimatedDate(), forecastRecapLine.getAmount());
|
||||
}
|
||||
}
|
||||
}
|
||||
Set<LocalDate> keyList = map.keySet();
|
||||
for (LocalDate date : keyList) {
|
||||
Map<String, Object> dataMap = new HashMap<String, Object>();
|
||||
dataMap.put("date", (Object) date);
|
||||
dataMap.put("amount", (Object) map.get(date));
|
||||
dataList.add(dataMap);
|
||||
}
|
||||
response.setData(dataList);
|
||||
}
|
||||
|
||||
public void marges(ActionRequest request, ActionResponse response) throws AxelorException {
|
||||
Long id = new Long(request.getContext().get("_id").toString());
|
||||
ForecastRecapService forecastRecapService = Beans.get(ForecastRecapService.class);
|
||||
ForecastRecap forecastRecap = Beans.get(ForecastRecapRepository.class).find(id);
|
||||
forecastRecap.setForecastRecapLineList(new ArrayList<ForecastRecapLine>());
|
||||
|
||||
forecastRecapService.populateWithTimetablesOrOrders(forecastRecap);
|
||||
forecastRecapService.populateWithExpenses(forecastRecap);
|
||||
forecastRecapService.populateWithSalaries(forecastRecap);
|
||||
forecastRecapService.populateWithForecastsNoSave(forecastRecap);
|
||||
forecastRecapService.populateWithInvoices(forecastRecap);
|
||||
if (forecastRecap.getOpportunitiesTypeSelect() != null
|
||||
&& forecastRecap.getOpportunitiesTypeSelect()
|
||||
> ForecastRecapRepository.OPPORTUNITY_TYPE_NO) {
|
||||
forecastRecapService.populateWithOpportunities(forecastRecap);
|
||||
}
|
||||
List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
|
||||
Map<LocalDate, BigDecimal> map = new HashMap<LocalDate, BigDecimal>();
|
||||
for (ForecastRecapLine forecastRecapLine : forecastRecap.getForecastRecapLineList()) {
|
||||
if (forecastRecapLine.getTypeSelect() == 2) {
|
||||
if (map.containsKey(forecastRecapLine.getEstimatedDate())) {
|
||||
map.put(
|
||||
forecastRecapLine.getEstimatedDate(),
|
||||
map.get(forecastRecapLine.getEstimatedDate())
|
||||
.subtract(forecastRecapLine.getAmount()));
|
||||
} else {
|
||||
map.put(
|
||||
forecastRecapLine.getEstimatedDate(),
|
||||
BigDecimal.ZERO.subtract(forecastRecapLine.getAmount()));
|
||||
}
|
||||
} else {
|
||||
if (map.containsKey(forecastRecapLine.getEstimatedDate())) {
|
||||
map.put(
|
||||
forecastRecapLine.getEstimatedDate(),
|
||||
map.get(forecastRecapLine.getEstimatedDate()).add(forecastRecapLine.getAmount()));
|
||||
} else {
|
||||
map.put(forecastRecapLine.getEstimatedDate(), forecastRecapLine.getAmount());
|
||||
}
|
||||
}
|
||||
}
|
||||
Set<LocalDate> keyList = map.keySet();
|
||||
for (LocalDate date : keyList) {
|
||||
Map<String, Object> dataMap = new HashMap<String, Object>();
|
||||
dataMap.put("date", (Object) date);
|
||||
dataMap.put("amount", (Object) map.get(date));
|
||||
dataList.add(dataMap);
|
||||
}
|
||||
response.setData(dataList);
|
||||
}
|
||||
|
||||
public void print(ActionRequest request, ActionResponse response) throws AxelorException {
|
||||
Context context = request.getContext();
|
||||
Long forecastRecapId = new Long(context.get("_forecastRecapId").toString());
|
||||
String reportType = (String) context.get("reportTypeSelect");
|
||||
String fileLink =
|
||||
Beans.get(ForecastRecapService.class).getForecastRecapFileLink(forecastRecapId, reportType);
|
||||
String title = I18n.get(ITranslation.CASH_MANAGEMENT_REPORT_TITLE);
|
||||
title += forecastRecapId;
|
||||
logger.debug("Printing " + title);
|
||||
response.setView(ActionView.define(title).add("html", fileLink).map());
|
||||
response.setCanClose(true);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="base_sequence.csv" separator=";" type="com.axelor.apps.base.db.Sequence" search="self.importId = :importId">
|
||||
<bind to="yearlyResetOk" column="yearlyResetOk" eval="yearlyResetOk == '1' ? true : false"/>
|
||||
<bind to="nextNum" column="nextNum" eval="nextNum?.empty ? '1' : nextNum"/>
|
||||
<bind to="padding" column="padding" eval="padding?.empty ? '1' : padding"/>
|
||||
<bind to="toBeAdded" column="toBeAdded" eval="toBeAdded?.empty ? '1' : toBeAdded"/>
|
||||
<bind to="resetDate" eval="call:com.axelor.apps.base.service.app.AppBaseService:getTodayDate()" />
|
||||
</input>
|
||||
|
||||
</csv-inputs>
|
||||
@ -0,0 +1,2 @@
|
||||
"importId";"code";"name";"nextNum";"padding";"prefixe";"suffixe";"toBeAdded";"yearlyResetOk"
|
||||
1000;"forecastRecap";"Estimated liquidity plan";1;4;"AXELP";;1;1
|
||||
|
@ -0,0 +1,2 @@
|
||||
"importId";"code";"name";"nextNum";"padding";"prefixe";"suffixe";"toBeAdded";"yearlyResetOk"
|
||||
1000;"forecastRecap";"Plan de trésorerie prévisionnel";1;4;"AXPTP";;1;1
|
||||
|
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="auth_permission.csv" separator=";" type="com.axelor.auth.db.Permission" search="self.name = :name" call="com.axelor.csv.script.ImportPermission:importPermissionToRole">
|
||||
<bind to="canRead" eval="can_read == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canWrite" eval="can_write == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canCreate" eval="can_create == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canRemove" eval="can_remove == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canExport" eval="can_export == 'x' ? 'true' : 'false'"/>
|
||||
</input>
|
||||
|
||||
<input file="base_appCashManagement.csv" separator=";" type="com.axelor.apps.base.db.AppCashManagement" call="com.axelor.csv.script.ImportApp:importApp">
|
||||
<bind column="dependsOn" to="dependsOnSet" search="self.code in :dependsOn" eval="dependsOn.split(',') as List"/>
|
||||
</input>
|
||||
|
||||
<input file="meta_helpEN.csv" separator=";" type="com.axelor.meta.db.MetaHelp">
|
||||
<bind to="language" eval="'en'" />
|
||||
<bind to="type" eval="'tooltip'" />
|
||||
<bind to="model" eval="com.axelor.inject.Beans.get(com.axelor.meta.db.repo.MetaModelRepository.class).findByName(object)?.getFullName()" column="object" />
|
||||
</input>
|
||||
|
||||
<input file="meta_helpFR.csv" separator=";" type="com.axelor.meta.db.MetaHelp">
|
||||
<bind to="language" eval="'fr'" />
|
||||
<bind to="type" eval="'tooltip'" />
|
||||
<bind to="model" eval="com.axelor.inject.Beans.get(com.axelor.meta.db.repo.MetaModelRepository.class).findByName(object)?.getFullName()" column="object" />
|
||||
</input>
|
||||
|
||||
<input file="meta_metaMenu.csv" separator=";" type="com.axelor.meta.db.MetaMenu" search="self.name = :name" update="true" />
|
||||
|
||||
</csv-inputs>
|
||||
|
||||
@ -0,0 +1,2 @@
|
||||
"name";"object";"can_read";"can_write";"can_create";"can_remove";"can_export";"condition";"conditionParams";"roleName"
|
||||
"perm.cash.management.all";"com.axelor.apps.cash.management.db.*";"x";"x";"x";"x";"x";;;"Admin"
|
||||
|
@ -0,0 +1,2 @@
|
||||
"name";"code";"installOrder";"description";"cashManagementGeneral.importId";"imagePath";"modules";"dependsOn";"sequence"
|
||||
"Cash management";"cash-management";19;"Cash management configuration";1;"app-cash-management.png";"axelor-cash-management";"account";9
|
||||
|
Binary file not shown.
|
After Width: | Height: | Size: 712 B |
@ -0,0 +1,2 @@
|
||||
"module";"object";"view";"field";"help"
|
||||
"axelor-cash-management";"ForecastRecap";"forecast-recap-form";"showReport";"This button allows you to see the results as a histogram, which is generated in PDF format."
|
||||
|
@ -0,0 +1,2 @@
|
||||
"module";"object";"view";"field";"help"
|
||||
"axelor-cash-management";"ForecastRecap";"forecast-recap-form";"showReport";"Ce bouton permet de voir les résultats sous forme d'histogramme, qui est généré sous format PDF."
|
||||
|
@ -0,0 +1,8 @@
|
||||
"name";"roles.name"
|
||||
"forecast-root";"Admin"
|
||||
"forecast-root-forecast";"Admin"
|
||||
"forecast-root-forecast-recap";"Admin"
|
||||
"forecast-root-forecast-report";"Admin"
|
||||
"forecast-conf";"Admin"
|
||||
"forecast-conf-forecast-generator";"Admin"
|
||||
"forecast-conf-forecast-reason";"Admin"
|
||||
|
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="base_sequence.csv" separator=";" type="com.axelor.apps.base.db.Sequence" search="self.importId = :importId" call="com.axelor.csv.script.SequenceScript:computeFullname">
|
||||
<bind to="yearlyResetOk" column="yearlyResetOk" eval="yearlyResetOk == '1' ? true : false"/>
|
||||
<bind to="nextNum" column="nextNum" eval="nextNum?.empty ? '1' : nextNum"/>
|
||||
<bind to="padding" column="padding" eval="padding?.empty ? '1' : padding"/>
|
||||
<bind to="toBeAdded" column="toBeAdded" eval="toBeAdded?.empty ? '1' : toBeAdded"/>
|
||||
</input>
|
||||
|
||||
</csv-inputs>
|
||||
|
||||
@ -0,0 +1,2 @@
|
||||
"code";"manageMultiBanks"
|
||||
"cash-management";"true"
|
||||
|
@ -0,0 +1,2 @@
|
||||
"importId";"company.importId"
|
||||
1000;1
|
||||
|
@ -0,0 +1,2 @@
|
||||
"code";"manageMultiBanks"
|
||||
"cash-management";"true"
|
||||
|
@ -0,0 +1,2 @@
|
||||
"importId";"company.importId"
|
||||
1000;1
|
||||
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="base_appCashManagement.csv" separator=";" type="com.axelor.apps.base.db.AppCashManagement" search="self.code = :code" update="true" />
|
||||
|
||||
</csv-inputs>
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="base" package="com.axelor.apps.base.db"/>
|
||||
|
||||
<entity name="AppCashManagement" lang="java" cacheable="true" extends="App" />
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" ?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="human-resource" package="com.axelor.apps.hr.db"/>
|
||||
|
||||
<entity name="Employee" cacheable="true">
|
||||
|
||||
<many-to-one name="bankDetails" ref="com.axelor.apps.base.db.BankDetails" title="Bank"/>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="cash-management" package="com.axelor.apps.cash.management.db"/>
|
||||
|
||||
<entity name="Forecast" lang="java">
|
||||
|
||||
<many-to-one name="company" ref="com.axelor.apps.base.db.Company" required="true" title="Company" />
|
||||
<many-to-one name="bankDetails" ref="com.axelor.apps.base.db.BankDetails" title="Bank" required="true"/>
|
||||
<many-to-one name="forecastReason" ref="com.axelor.apps.cash.management.db.ForecastReason" required="true" title="Reason" />
|
||||
<integer name="typeSelect" selection="iaccount.payment.mode.in.out.select" title="Type" required="true"/>
|
||||
<decimal name="amount" title="Amount"/>
|
||||
<date name="estimatedDate" title="Estimated date"/>
|
||||
<string name="comments" title="Comments" large="true"/>
|
||||
<integer name="realizedSelect" selection="forecast.realized.select" title="Realized" default="2"/>
|
||||
<many-to-one name="forecastGenerator" ref="com.axelor.apps.cash.management.db.ForecastGenerator"/>
|
||||
|
||||
<extra-code><![CDATA[
|
||||
|
||||
|
||||
public static final int REALISED_SELECT_YES = 1;
|
||||
public static final int REALISED_SELECT_NO = 2;
|
||||
public static final int REALISED_SELECT_AUTO = 3;
|
||||
|
||||
|
||||
]]></extra-code>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="cash-management" package="com.axelor.apps.cash.management.db"/>
|
||||
|
||||
<entity name="ForecastGenerator" lang="java">
|
||||
|
||||
<many-to-one name="company" ref="com.axelor.apps.base.db.Company" required="true" title="Company" />
|
||||
<many-to-one name="bankDetails" ref="com.axelor.apps.base.db.BankDetails" title="Bank" required="true"/>
|
||||
<many-to-one name="forecastReason" ref="com.axelor.apps.cash.management.db.ForecastReason" required="true" title="Reason" />
|
||||
<integer name="typeSelect" selection="iaccount.payment.mode.in.out.select" title="Type" required="true"/>
|
||||
<decimal name="amount" title="Amount"/>
|
||||
<date name="fromDate" title="From" required="true"/>
|
||||
<date name="toDate" title="To" required="true"/>
|
||||
<string name="comments" title="Comments" large="true"/>
|
||||
<integer name="realizedSelect" selection="forecast.realized.select" title="Realized" default="2"/>
|
||||
<integer name="periodicitySelect" selection="product.periodicity.subscription.select" title="Periodicity" default="1"/>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="cash-management" package="com.axelor.apps.cash.management.db"/>
|
||||
|
||||
<entity name="ForecastReason" lang="java">
|
||||
|
||||
<string name="reason" title="Reason" required="true" namecolumn="true"/>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="cash-management" package="com.axelor.apps.cash.management.db"/>
|
||||
|
||||
<entity name="ForecastRecap" lang="java">
|
||||
|
||||
<string name="forecastRecapSeq" readonly="true" title="Seq." />
|
||||
<many-to-one name="company" ref="com.axelor.apps.base.db.Company" required="true" title="Company" />
|
||||
<many-to-one name="bankDetails" ref="com.axelor.apps.base.db.BankDetails" title="Bank"/>
|
||||
<decimal name="startingBalance" title="Starting Balance" required="true"/>
|
||||
<decimal name="endingBalance" title="Ending Balance"/>
|
||||
<decimal name="currentBalance"/>
|
||||
<date name="fromDate" title="From"/>
|
||||
<date name="toDate" title="To"/>
|
||||
<one-to-many name="forecastRecapLineList" ref="com.axelor.apps.cash.management.db.ForecastRecapLine" title="Details" mappedBy="forecastRecap"/>
|
||||
<integer name="opportunitiesTypeSelect" title="Take into account opportunies" selection="forecast.opportunities.type.select"/>
|
||||
<many-to-one name="currency" ref="com.axelor.apps.base.db.Currency" title="Currency" massUpdate="true"/>
|
||||
<many-to-one name="salesMan" ref="com.axelor.auth.db.User" title="SalesMan"/>
|
||||
<integer name="displayTypeSelect" title="Display" selection="display.type.select" default="3"/>
|
||||
<boolean name="isReport"/>
|
||||
<date name="calculationDate" title="Calculation Date" readonly="true"/>
|
||||
|
||||
<unique-constraint columns="forecastRecapSeq,company"/>
|
||||
|
||||
<extra-code><![CDATA[
|
||||
|
||||
|
||||
public static final int OPPORTUNITY_TYPE_NO = 1;
|
||||
public static final int OPPORTUNITY_TYPE_BASE = 2;
|
||||
public static final int OPPORTUNITY_TYPE_WORST = 3;
|
||||
public static final int OPPORTUNITY_TYPE_BEST = 4;
|
||||
|
||||
]]></extra-code>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="cash-management" package="com.axelor.apps.cash.management.db"/>
|
||||
|
||||
<entity name="ForecastRecapLine" lang="java">
|
||||
|
||||
<integer name="typeSelect" selection="iaccount.payment.mode.in.out.select" title="Type" required="true"/>
|
||||
<decimal name="amount" title="Amount"/>
|
||||
<date name="estimatedDate" title="Date"/>
|
||||
<decimal name="balance" title="ForecastRecapLine.balance"/>
|
||||
<many-to-one name="forecastRecap" ref="com.axelor.apps.cash.management.db.ForecastRecap"/>
|
||||
<string name="relatedToSelect" title="Related to" selection="forecast.recap.line.related.to.select"/>
|
||||
<long name="relatedToSelectId"/>
|
||||
<string name="relatedToSelectName" title="Related to"/>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="account" package="com.axelor.apps.account.db"/>
|
||||
|
||||
<entity sequential="true" name="Invoice" lang="java">
|
||||
|
||||
<date name="estimatedPaymentDate" title="Estimated payment date"/>
|
||||
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="crm" package="com.axelor.apps.crm.db"/>
|
||||
|
||||
<entity name="Opportunity" lang="java">
|
||||
|
||||
<many-to-one name="bankDetails" ref="com.axelor.apps.base.db.BankDetails" title="Bank"/>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<domain-models xmlns="http://axelor.com/xml/ns/domain-models"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/domain-models http://axelor.com/xml/ns/domain-models/domain-models_5.2.xsd">
|
||||
|
||||
<module name="base" package="com.axelor.apps.base.db"/>
|
||||
|
||||
<entity name="Sequence" lang="java">
|
||||
|
||||
<extra-code><![CDATA[
|
||||
|
||||
//SEQUENCE SELECT
|
||||
public static final String FORECAST_RECAP_SEQUENCE = "forecastRecap";
|
||||
|
||||
]]></extra-code>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@ -0,0 +1,101 @@
|
||||
"key","message","comment","context"
|
||||
"Amount",,,
|
||||
"Auto",,,
|
||||
"Bank",,,
|
||||
"Base",,,
|
||||
"Best",,,
|
||||
"Both",,,
|
||||
"Calculation Date",,,
|
||||
"Cash management",,,
|
||||
"Comments",,,
|
||||
"Company",,,
|
||||
"Configuration",,,
|
||||
"Confirmed",,,
|
||||
"Currency",,,
|
||||
"Current balance",,,
|
||||
"Date",,,
|
||||
"Details",,,
|
||||
"Display",,,
|
||||
"Ending Balance",,,
|
||||
"Estimated date",,,
|
||||
"Estimated payment date",,,
|
||||
"Expected",,,
|
||||
"Expense",,,
|
||||
"Forecast",,,
|
||||
"Forecast Assistant",,,
|
||||
"Forecast Assistants",,,
|
||||
"Forecast Reasons",,,
|
||||
"Forecast Recap",,,
|
||||
"Forecast Recaps",,,
|
||||
"Forecast Report",,,
|
||||
"Forecast Reports",,,
|
||||
"Forecast generator",,,
|
||||
"Forecast reason",,,
|
||||
"Forecast reasons",,,
|
||||
"Forecast recap",,,
|
||||
"ForecastLine.amount",,,
|
||||
"ForecastLine.balance",,,
|
||||
"ForecastLine.estimatedDate",,,
|
||||
"ForecastLine.relatedToName",,,
|
||||
"ForecastLine.type",,,
|
||||
"ForecastLineType.in",,,
|
||||
"ForecastLineType.out",,,
|
||||
"ForecastOpportunitiesType.base",,,
|
||||
"ForecastOpportunitiesType.best",,,
|
||||
"ForecastOpportunitiesType.no",,,
|
||||
"ForecastOpportunitiesType.worst",,,
|
||||
"ForecastRecap",,,
|
||||
"ForecastRecap.bankDetailsIban",,,
|
||||
"ForecastRecap.calculationDate",,,
|
||||
"ForecastRecap.company",,,
|
||||
"ForecastRecap.currency",,,
|
||||
"ForecastRecap.endingBalance",,,
|
||||
"ForecastRecap.fromDate",,,
|
||||
"ForecastRecap.operationDetails",,,
|
||||
"ForecastRecap.opportunitiesTypeSelect",,,
|
||||
"ForecastRecap.startingBalance",,,
|
||||
"ForecastRecap.title",,,
|
||||
"ForecastRecap.toDate",,,
|
||||
"ForecastRecapLine.balance",,,
|
||||
"Forecasts",,,
|
||||
"Forecasts generated",,,
|
||||
"Format",,,
|
||||
"From",,,
|
||||
"Generate",,,
|
||||
"Invalid dates",,,
|
||||
"Invoice",,,
|
||||
"Is report",,,
|
||||
"Line",,,
|
||||
"Lines",,,
|
||||
"Marges",,,
|
||||
"No",,,
|
||||
"ODS",,,
|
||||
"PDF",,,
|
||||
"Periodicity",,,
|
||||
"Please select a company",,,
|
||||
"Populate",,,
|
||||
"Previsional Marges",,,
|
||||
"Previsional Sales",,,
|
||||
"Previsional Spending",,,
|
||||
"Print",,,
|
||||
"Purchase order",,,
|
||||
"Realized",,,
|
||||
"Reason",,,
|
||||
"Related to",,,
|
||||
"Related to select",,,
|
||||
"Reports",,,
|
||||
"Sale order",,,
|
||||
"Sales",,,
|
||||
"SalesMan",,,
|
||||
"Seq.",,,
|
||||
"Spending",,,
|
||||
"Starting Balance",,,
|
||||
"Take into account opportunies",,,
|
||||
"The company %s doesn't have any configured sequence for ForcastRecap",,,
|
||||
"To",,,
|
||||
"Type",,,
|
||||
"Update",,,
|
||||
"Worst",,,
|
||||
"XLS",,,
|
||||
"Yes",,,
|
||||
"value:Cash management",,,
|
||||
|
@ -0,0 +1,101 @@
|
||||
"key","message","comment","context"
|
||||
"Amount","Betrag",,
|
||||
"Auto","Auto",,
|
||||
"Bank","Bank",,
|
||||
"Base","Basis",,
|
||||
"Best","Beste",,
|
||||
"Both","Beide",,
|
||||
"Calculation Date",,,
|
||||
"Cash management","Bargeldmanagement",,
|
||||
"Comments","Kommentare",,
|
||||
"Company","Unternehmen",,
|
||||
"Configuration","Konfiguration",,
|
||||
"Confirmed","Bestätigt",,
|
||||
"Currency","Währung",,
|
||||
"Current balance","Aktueller Saldo",,
|
||||
"Date","Datum",,
|
||||
"Details","Details",,
|
||||
"Display","Display",,
|
||||
"Ending Balance","Endsaldo",,
|
||||
"Estimated date","Geschätztes Datum",,
|
||||
"Estimated payment date","Geschätztes Zahlungsdatum",,
|
||||
"Expected","Erwartet",,
|
||||
"Expense",,,
|
||||
"Forecast","Prognose",,
|
||||
"Forecast Assistant","Prognosehilfe",,
|
||||
"Forecast Assistants","Prognose-Assistenten",,
|
||||
"Forecast Reasons","Prognosegründe",,
|
||||
"Forecast Recap","Prognosebericht",,
|
||||
"Forecast Recaps","Prognose-Rekapitulationen",,
|
||||
"Forecast Report","Prognosebericht",,
|
||||
"Forecast Reports","Prognoseberichte",,
|
||||
"Forecast generator","Prognosegenerator",,
|
||||
"Forecast reason","Prognosegrund",,
|
||||
"Forecast reasons","Prognosegründe",,
|
||||
"Forecast recap","Zusammenfassung der Prognose",,
|
||||
"ForecastLine.amount",,,
|
||||
"ForecastLine.balance",,,
|
||||
"ForecastLine.estimatedDate",,,
|
||||
"ForecastLine.relatedToName",,,
|
||||
"ForecastLine.type",,,
|
||||
"ForecastLineType.in",,,
|
||||
"ForecastLineType.out",,,
|
||||
"ForecastOpportunitiesType.base",,,
|
||||
"ForecastOpportunitiesType.best",,,
|
||||
"ForecastOpportunitiesType.no",,,
|
||||
"ForecastOpportunitiesType.worst",,,
|
||||
"ForecastRecap","Prognosebericht",,
|
||||
"ForecastRecap.bankDetailsIban",,,
|
||||
"ForecastRecap.calculationDate",,,
|
||||
"ForecastRecap.company",,,
|
||||
"ForecastRecap.currency",,,
|
||||
"ForecastRecap.endingBalance",,,
|
||||
"ForecastRecap.fromDate",,,
|
||||
"ForecastRecap.operationDetails",,,
|
||||
"ForecastRecap.opportunitiesTypeSelect",,,
|
||||
"ForecastRecap.startingBalance",,,
|
||||
"ForecastRecap.title",,,
|
||||
"ForecastRecap.toDate",,,
|
||||
"ForecastRecapLine.balance",,,
|
||||
"Forecasts","Prognosen",,
|
||||
"Forecasts generated","Generierte Prognosen",,
|
||||
"Format",,,
|
||||
"From","Von",,
|
||||
"Generate","Generieren",,
|
||||
"Invalid dates","Ungültige Daten",,
|
||||
"Invoice",,,
|
||||
"Is report","Ist Bericht",,
|
||||
"Line","Linie",,
|
||||
"Lines","Linien",,
|
||||
"Marges","Margen",,
|
||||
"No","Nein",,
|
||||
"ODS",,,
|
||||
"PDF",,,
|
||||
"Periodicity","Periodizität",,
|
||||
"Please select a company","Bitte wählen Sie ein Unternehmen aus",,
|
||||
"Populate","Füllen",,
|
||||
"Previsional Marges","Vorläufige Margen",,
|
||||
"Previsional Sales","Vorläufiger Umsatz",,
|
||||
"Previsional Spending","Vorläufige Ausgaben",,
|
||||
"Print",,,
|
||||
"Purchase order",,,
|
||||
"Realized","Realisiert",,
|
||||
"Reason","Grund",,
|
||||
"Related to",,,
|
||||
"Related to select",,,
|
||||
"Reports",,,
|
||||
"Sale order",,,
|
||||
"Sales","Umsatz",,
|
||||
"SalesMan","Vertriebsmitarbeiter",,
|
||||
"Seq.",,,
|
||||
"Spending","Ausgaben",,
|
||||
"Starting Balance","Anfangssaldo",,
|
||||
"Take into account opportunies","Chancen berücksichtigen",,
|
||||
"The company %s doesn't have any configured sequence for ForcastRecap",,,
|
||||
"To","An",,
|
||||
"Type","Typ",,
|
||||
"Update","Update",,
|
||||
"Worst","Schlimmste",,
|
||||
"XLS",,,
|
||||
"Yes","Ja",,
|
||||
"value:Cash management","Wert:Cash Management",,
|
||||
|
@ -0,0 +1,101 @@
|
||||
"key","message","comment","context"
|
||||
"Amount",,,
|
||||
"Auto",,,
|
||||
"Bank",,,
|
||||
"Base",,,
|
||||
"Best",,,
|
||||
"Both",,,
|
||||
"Calculation Date",,,
|
||||
"Cash management",,,
|
||||
"Comments",,,
|
||||
"Company",,,
|
||||
"Configuration",,,
|
||||
"Confirmed",,,
|
||||
"Currency",,,
|
||||
"Current balance",,,
|
||||
"Date",,,
|
||||
"Details",,,
|
||||
"Display",,,
|
||||
"Ending Balance",,,
|
||||
"Estimated date",,,
|
||||
"Estimated payment date",,,
|
||||
"Expected",,,
|
||||
"Expense",,,
|
||||
"Forecast",,,
|
||||
"Forecast Assistant",,,
|
||||
"Forecast Assistants",,,
|
||||
"Forecast Reasons",,,
|
||||
"Forecast Recap",,,
|
||||
"Forecast Recaps",,,
|
||||
"Forecast Report",,,
|
||||
"Forecast Reports",,,
|
||||
"Forecast generator",,,
|
||||
"Forecast reason",,,
|
||||
"Forecast reasons",,,
|
||||
"Forecast recap",,,
|
||||
"ForecastLine.amount","Amount",,
|
||||
"ForecastLine.balance","Balance",,
|
||||
"ForecastLine.estimatedDate","Date",,
|
||||
"ForecastLine.relatedToName","Realted to",,
|
||||
"ForecastLine.type","Type",,
|
||||
"ForecastLineType.in","In",,
|
||||
"ForecastLineType.out","Out",,
|
||||
"ForecastOpportunitiesType.base","Base",,
|
||||
"ForecastOpportunitiesType.best","Best",,
|
||||
"ForecastOpportunitiesType.no","No",,
|
||||
"ForecastOpportunitiesType.worst","Worst",,
|
||||
"ForecastRecap",,,
|
||||
"ForecastRecap.bankDetailsIban","IBAN",,
|
||||
"ForecastRecap.calculationDate","Calculation date",,
|
||||
"ForecastRecap.company","Company",,
|
||||
"ForecastRecap.currency","Currency",,
|
||||
"ForecastRecap.endingBalance","Ending balance",,
|
||||
"ForecastRecap.fromDate","From",,
|
||||
"ForecastRecap.operationDetails","Operation details",,
|
||||
"ForecastRecap.opportunitiesTypeSelect","Take into account opportunies",,
|
||||
"ForecastRecap.startingBalance","Starting balance",,
|
||||
"ForecastRecap.title","Estimated liquidity plan",,
|
||||
"ForecastRecap.toDate","To",,
|
||||
"ForecastRecapLine.balance","Balance",,
|
||||
"Forecasts",,,
|
||||
"Forecasts generated",,,
|
||||
"Format",,,
|
||||
"From",,,
|
||||
"Generate",,,
|
||||
"Invalid dates",,,
|
||||
"Invoice",,,
|
||||
"Is report",,,
|
||||
"Line",,,
|
||||
"Lines",,,
|
||||
"Marges",,,
|
||||
"No",,,
|
||||
"ODS",,,
|
||||
"PDF",,,
|
||||
"Periodicity",,,
|
||||
"Please select a company",,,
|
||||
"Populate",,,
|
||||
"Previsional Marges",,,
|
||||
"Previsional Sales",,,
|
||||
"Previsional Spending",,,
|
||||
"Print",,,
|
||||
"Purchase order",,,
|
||||
"Realized",,,
|
||||
"Reason",,,
|
||||
"Related to",,,
|
||||
"Related to select",,,
|
||||
"Reports",,,
|
||||
"Sale order",,,
|
||||
"Sales",,,
|
||||
"SalesMan",,,
|
||||
"Seq.",,,
|
||||
"Spending",,,
|
||||
"Starting Balance",,,
|
||||
"Take into account opportunies",,,
|
||||
"The company %s doesn't have any configured sequence for ForcastRecap",,,
|
||||
"To",,,
|
||||
"Type",,,
|
||||
"Update",,,
|
||||
"Worst",,,
|
||||
"XLS",,,
|
||||
"Yes",,,
|
||||
"value:Cash management",,,
|
||||
|
@ -0,0 +1,101 @@
|
||||
"key","message","comment","context"
|
||||
"Amount","Importe",,
|
||||
"Auto","Auto",,
|
||||
"Bank","Banco",,
|
||||
"Base","Base",,
|
||||
"Best","Mejor",,
|
||||
"Both","Ambos",,
|
||||
"Calculation Date",,,
|
||||
"Cash management","Gestión de tesorería",,
|
||||
"Comments","Comentarios",,
|
||||
"Company","Empresa",,
|
||||
"Configuration","Configuración",,
|
||||
"Confirmed","Confirmado",,
|
||||
"Currency","Moneda",,
|
||||
"Current balance","Saldo actual",,
|
||||
"Date","Fecha",,
|
||||
"Details","Detalles",,
|
||||
"Display","Pantalla",,
|
||||
"Ending Balance","Saldo final",,
|
||||
"Estimated date","Fecha estimada",,
|
||||
"Estimated payment date","Fecha estimada de pago",,
|
||||
"Expected","Esperado",,
|
||||
"Expense",,,
|
||||
"Forecast","Pronóstico",,
|
||||
"Forecast Assistant","Asistente de pronóstico",,
|
||||
"Forecast Assistants","Asistentes de pronóstico",,
|
||||
"Forecast Reasons","Motivos del pronóstico",,
|
||||
"Forecast Recap","Recapitulación de pronósticos",,
|
||||
"Forecast Recaps","Recapitulación de pronósticos",,
|
||||
"Forecast Report","Informe de pronóstico",,
|
||||
"Forecast Reports","Informes de pronóstico",,
|
||||
"Forecast generator","Generador de pronósticos",,
|
||||
"Forecast reason","Motivo de pronóstico",,
|
||||
"Forecast reasons","Motivos de pronóstico",,
|
||||
"Forecast recap","Recapitulación de pronósticos",,
|
||||
"ForecastLine.amount",,,
|
||||
"ForecastLine.balance",,,
|
||||
"ForecastLine.estimatedDate",,,
|
||||
"ForecastLine.relatedToName",,,
|
||||
"ForecastLine.type",,,
|
||||
"ForecastLineType.in",,,
|
||||
"ForecastLineType.out",,,
|
||||
"ForecastOpportunitiesType.base",,,
|
||||
"ForecastOpportunitiesType.best",,,
|
||||
"ForecastOpportunitiesType.no",,,
|
||||
"ForecastOpportunitiesType.worst",,,
|
||||
"ForecastRecap","PronósticoRecuperación",,
|
||||
"ForecastRecap.bankDetailsIban",,,
|
||||
"ForecastRecap.calculationDate",,,
|
||||
"ForecastRecap.company",,,
|
||||
"ForecastRecap.currency",,,
|
||||
"ForecastRecap.endingBalance",,,
|
||||
"ForecastRecap.fromDate",,,
|
||||
"ForecastRecap.operationDetails",,,
|
||||
"ForecastRecap.opportunitiesTypeSelect",,,
|
||||
"ForecastRecap.startingBalance",,,
|
||||
"ForecastRecap.title",,,
|
||||
"ForecastRecap.toDate",,,
|
||||
"ForecastRecapLine.balance",,,
|
||||
"Forecasts","Previsiones",,
|
||||
"Forecasts generated","Pronósticos generados",,
|
||||
"Format",,,
|
||||
"From","Desde",,
|
||||
"Generate","Generar",,
|
||||
"Invalid dates","Fechas no válidas",,
|
||||
"Invoice",,,
|
||||
"Is report","Es informe",,
|
||||
"Line","Línea",,
|
||||
"Lines","Líneas",,
|
||||
"Marges","Marges",,
|
||||
"No","No",,
|
||||
"ODS",,,
|
||||
"PDF",,,
|
||||
"Periodicity","Periodicidad",,
|
||||
"Please select a company","Por favor, seleccione una empresa",,
|
||||
"Populate","Poblar",,
|
||||
"Previsional Marges","Marcas Previsionales",,
|
||||
"Previsional Sales","Ventas Previsionales",,
|
||||
"Previsional Spending","Gasto Previsional",,
|
||||
"Print",,,
|
||||
"Purchase order",,,
|
||||
"Realized","Realizado",,
|
||||
"Reason","Razón",,
|
||||
"Related to",,,
|
||||
"Related to select",,,
|
||||
"Reports",,,
|
||||
"Sale order",,,
|
||||
"Sales","Ventas",,
|
||||
"SalesMan","Vendedor",,
|
||||
"Seq.",,,
|
||||
"Spending","Gasto",,
|
||||
"Starting Balance","Saldo inicial",,
|
||||
"Take into account opportunies","Tener en cuenta las oportunidades",,
|
||||
"The company %s doesn't have any configured sequence for ForcastRecap",,,
|
||||
"To","Para",,
|
||||
"Type","Tipo",,
|
||||
"Update","Actualización",,
|
||||
"Worst","Peor",,
|
||||
"XLS",,,
|
||||
"Yes","Sí",,
|
||||
"value:Cash management","value:Gestión de caja",,
|
||||
|
@ -0,0 +1,101 @@
|
||||
"key","message","comment","context"
|
||||
"Amount","Montant",,
|
||||
"Auto",,,
|
||||
"Bank","Banque",,
|
||||
"Base",,,
|
||||
"Best","Meilleur cas",,
|
||||
"Both","Les deux",,
|
||||
"Calculation Date","Date de calcul",,
|
||||
"Cash management","Prévisions de trésorerie",,
|
||||
"Comments","Commentaires",,
|
||||
"Company","Société",,
|
||||
"Configuration",,,
|
||||
"Confirmed","Confirmé",,
|
||||
"Currency","Devise",,
|
||||
"Current balance","Solde actuel",,
|
||||
"Date",,,
|
||||
"Details","Détails",,
|
||||
"Display","Afficher",,
|
||||
"Ending Balance","Solde d’arrivée",,
|
||||
"Estimated date","Date estimée",,
|
||||
"Estimated payment date","Date de paiement estimée",,
|
||||
"Expected","Prévu",,
|
||||
"Expense",,,
|
||||
"Forecast","Prévision",,
|
||||
"Forecast Assistant","Assistant prévisions",,
|
||||
"Forecast Assistants","Assistants prévisions",,
|
||||
"Forecast Reasons","Motifs",,
|
||||
"Forecast Recap","Récapitulatif prévisions",,
|
||||
"Forecast Recaps","Récapitulatifs prévisions",,
|
||||
"Forecast Report","Rapport prévisions",,
|
||||
"Forecast Reports","Rapports prévisions",,
|
||||
"Forecast generator","Assistant prévisions",,
|
||||
"Forecast reason","Motif",,
|
||||
"Forecast reasons","Motifs",,
|
||||
"Forecast recap","Récapitulatif prévisions",,
|
||||
"ForecastLine.amount","Montant",,
|
||||
"ForecastLine.balance","Solde",,
|
||||
"ForecastLine.estimatedDate","Date estimée",,
|
||||
"ForecastLine.relatedToName","Associé à",,
|
||||
"ForecastLine.type","Type",,
|
||||
"ForecastLineType.in","Entrant",,
|
||||
"ForecastLineType.out","Sortant",,
|
||||
"ForecastOpportunitiesType.base","Base",,
|
||||
"ForecastOpportunitiesType.best","Meilleur cas",,
|
||||
"ForecastOpportunitiesType.no","Non",,
|
||||
"ForecastOpportunitiesType.worst","Pire cas",,
|
||||
"ForecastRecap","Récapitulatif prévisions",,
|
||||
"ForecastRecap.bankDetailsIban","IBAN",,
|
||||
"ForecastRecap.calculationDate","Date de calcul",,
|
||||
"ForecastRecap.company","Société",,
|
||||
"ForecastRecap.currency","Devise",,
|
||||
"ForecastRecap.endingBalance","Solde d’arrivée",,
|
||||
"ForecastRecap.fromDate","De",,
|
||||
"ForecastRecap.operationDetails","Détails des opérations",,
|
||||
"ForecastRecap.opportunitiesTypeSelect","Prendre en compte les opportunités",,
|
||||
"ForecastRecap.startingBalance","Solde de départ",,
|
||||
"ForecastRecap.title","Plan de trésorerie prévisionnel",,
|
||||
"ForecastRecap.toDate","À",,
|
||||
"ForecastRecapLine.balance","Solde",,
|
||||
"Forecasts","Prévisions",,
|
||||
"Forecasts generated","Prévisions générées",,
|
||||
"Format",,,
|
||||
"From","De",,
|
||||
"Generate","Générer",,
|
||||
"Invalid dates","Dates invalides",,
|
||||
"Invoice",,,
|
||||
"Is report","Est un rapport",,
|
||||
"Line","Ligne",,
|
||||
"Lines","Lignes",,
|
||||
"Marges",,,
|
||||
"No","Non",,
|
||||
"ODS",,,
|
||||
"PDF",,,
|
||||
"Periodicity","Périodicité",,
|
||||
"Please select a company","Veuillez sélectionner une société",,
|
||||
"Populate","Compléter",,
|
||||
"Previsional Marges","Marges prévisionnelles",,
|
||||
"Previsional Sales","Ventes prévisionnelles",,
|
||||
"Previsional Spending","Dépenses prévisionnelles",,
|
||||
"Print","Imprimer",,
|
||||
"Purchase order",,,
|
||||
"Realized","Réalisé",,
|
||||
"Reason","Motif",,
|
||||
"Related to",,,
|
||||
"Related to select",,,
|
||||
"Reports",,,
|
||||
"Sale order",,,
|
||||
"Sales","Ventes",,
|
||||
"SalesMan","Commercial",,
|
||||
"Seq.",,,
|
||||
"Spending","Dépenses",,
|
||||
"Starting Balance","Solde de départ",,
|
||||
"Take into account opportunies","Prendre en compte les opportunités",,
|
||||
"The company %s doesn't have any configured sequence for ForcastRecap","La société %s n'a pas de séquence configurée pour ForcastRecap",,
|
||||
"To","À",,
|
||||
"Type",,,
|
||||
"Update","Mise à jour",,
|
||||
"Worst","Pire cas",,
|
||||
"XLS",,,
|
||||
"Yes","Oui",,
|
||||
"value:Cash management","Cash management",,
|
||||
|
@ -0,0 +1,101 @@
|
||||
"key","message","comment","context"
|
||||
"Amount","Importo",,
|
||||
"Auto","Auto",,
|
||||
"Bank","Banca",,
|
||||
"Base","Base",,
|
||||
"Best","Migliore",,
|
||||
"Both","Entrambi",,
|
||||
"Calculation Date",,,
|
||||
"Cash management","Gestione della liquidità",,
|
||||
"Comments","Commenti",,
|
||||
"Company","L'azienda",,
|
||||
"Configuration","Configurazione",,
|
||||
"Confirmed","Confermato",,
|
||||
"Currency","Valuta",,
|
||||
"Current balance","Saldo corrente",,
|
||||
"Date","Data",,
|
||||
"Details","Dettagli",,
|
||||
"Display","Display",,
|
||||
"Ending Balance","Saldo finale",,
|
||||
"Estimated date","Data stimata",,
|
||||
"Estimated payment date","Data di pagamento prevista",,
|
||||
"Expected","Previsto",,
|
||||
"Expense",,,
|
||||
"Forecast","Previsioni",,
|
||||
"Forecast Assistant","Assistente Previsione",,
|
||||
"Forecast Assistants","Assistenti di previsione",,
|
||||
"Forecast Reasons","Motivi delle previsioni",,
|
||||
"Forecast Recap","Previsione Ricapitolare",,
|
||||
"Forecast Recaps","Previsioni Ricadute",,
|
||||
"Forecast Report","Rapporto di previsione",,
|
||||
"Forecast Reports","Rapporti di previsione",,
|
||||
"Forecast generator","Generatore di previsioni",,
|
||||
"Forecast reason","Motivo delle previsioni",,
|
||||
"Forecast reasons","Motivi di previsione",,
|
||||
"Forecast recap","Riassunto delle previsioni",,
|
||||
"ForecastLine.amount",,,
|
||||
"ForecastLine.balance",,,
|
||||
"ForecastLine.estimatedDate",,,
|
||||
"ForecastLine.relatedToName",,,
|
||||
"ForecastLine.type",,,
|
||||
"ForecastLineType.in",,,
|
||||
"ForecastLineType.out",,,
|
||||
"ForecastOpportunitiesType.base",,,
|
||||
"ForecastOpportunitiesType.best",,,
|
||||
"ForecastOpportunitiesType.no",,,
|
||||
"ForecastOpportunitiesType.worst",,,
|
||||
"ForecastRecap","ForecastRecap",,
|
||||
"ForecastRecap.bankDetailsIban",,,
|
||||
"ForecastRecap.calculationDate",,,
|
||||
"ForecastRecap.company",,,
|
||||
"ForecastRecap.currency",,,
|
||||
"ForecastRecap.endingBalance",,,
|
||||
"ForecastRecap.fromDate",,,
|
||||
"ForecastRecap.operationDetails",,,
|
||||
"ForecastRecap.opportunitiesTypeSelect",,,
|
||||
"ForecastRecap.startingBalance",,,
|
||||
"ForecastRecap.title",,,
|
||||
"ForecastRecap.toDate",,,
|
||||
"ForecastRecapLine.balance",,,
|
||||
"Forecasts","Previsioni",,
|
||||
"Forecasts generated","Previsioni generate",,
|
||||
"Format",,,
|
||||
"From","Da",,
|
||||
"Generate","Generare",,
|
||||
"Invalid dates","Date non valide",,
|
||||
"Invoice",,,
|
||||
"Is report","È rapporto",,
|
||||
"Line","Linea",,
|
||||
"Lines","Linee",,
|
||||
"Marges","Margini",,
|
||||
"No","No",,
|
||||
"ODS",,,
|
||||
"PDF",,,
|
||||
"Periodicity","La periodicità",,
|
||||
"Please select a company","Selezionare un'azienda",,
|
||||
"Populate","Popolare",,
|
||||
"Previsional Marges","Margini Previsionali",,
|
||||
"Previsional Sales","Vendite Previsionali",,
|
||||
"Previsional Spending","Spesa Previsionale",,
|
||||
"Print",,,
|
||||
"Purchase order",,,
|
||||
"Realized","Realizzato",,
|
||||
"Reason","Ragione",,
|
||||
"Related to",,,
|
||||
"Related to select",,,
|
||||
"Reports",,,
|
||||
"Sale order",,,
|
||||
"Sales","Vendite",,
|
||||
"SalesMan","Venditore",,
|
||||
"Seq.",,,
|
||||
"Spending","Spesa",,
|
||||
"Starting Balance","Saldo iniziale",,
|
||||
"Take into account opportunies","Prendere in considerazione le opportunità",,
|
||||
"The company %s doesn't have any configured sequence for ForcastRecap",,,
|
||||
"To","A",,
|
||||
"Type","Tipo",,
|
||||
"Update","Aggiorna",,
|
||||
"Worst","Peggiore",,
|
||||
"XLS",,,
|
||||
"Yes","Sì",,
|
||||
"value:Cash management","valore:Cash management",,
|
||||
|
@ -0,0 +1,101 @@
|
||||
"key","message","comment","context"
|
||||
"Amount","Bedrag",,
|
||||
"Auto","Auto",,
|
||||
"Bank","Bank",,
|
||||
"Base","Basis",,
|
||||
"Best","Beste",,
|
||||
"Both","Beide",,
|
||||
"Calculation Date",,,
|
||||
"Cash management","Kasmiddelenbeheer",,
|
||||
"Comments","Commentaar",,
|
||||
"Company","Bedrijf",,
|
||||
"Configuration","Configuratie",,
|
||||
"Confirmed","Bevestigd",,
|
||||
"Currency","Valuta",,
|
||||
"Current balance","Huidig saldo",,
|
||||
"Date","Datum",,
|
||||
"Details","Details",,
|
||||
"Display","Vertoning",,
|
||||
"Ending Balance","Eindsaldo",,
|
||||
"Estimated date","Geschatte datum",,
|
||||
"Estimated payment date","Geschatte betalingsdatum",,
|
||||
"Expected","Verwacht",,
|
||||
"Expense",,,
|
||||
"Forecast","Voorspelling",,
|
||||
"Forecast Assistant","Prognose-assistent",,
|
||||
"Forecast Assistants","Prognose-assistenten",,
|
||||
"Forecast Reasons","Redenen voor de prognoses",,
|
||||
"Forecast Recap","Prognose Herziening",,
|
||||
"Forecast Recaps","Prognose Herschikkingen",,
|
||||
"Forecast Report","Prognoseverslag",,
|
||||
"Forecast Reports","Prognose rapporten",,
|
||||
"Forecast generator","Prognose generator",,
|
||||
"Forecast reason","Geraamde reden",,
|
||||
"Forecast reasons","Prognose redenen",,
|
||||
"Forecast recap","Voorspelling recapitulatie",,
|
||||
"ForecastLine.amount",,,
|
||||
"ForecastLine.balance",,,
|
||||
"ForecastLine.estimatedDate",,,
|
||||
"ForecastLine.relatedToName",,,
|
||||
"ForecastLine.type",,,
|
||||
"ForecastLineType.in",,,
|
||||
"ForecastLineType.out",,,
|
||||
"ForecastOpportunitiesType.base",,,
|
||||
"ForecastOpportunitiesType.best",,,
|
||||
"ForecastOpportunitiesType.no",,,
|
||||
"ForecastOpportunitiesType.worst",,,
|
||||
"ForecastRecap","VoorspellingRecap",,
|
||||
"ForecastRecap.bankDetailsIban",,,
|
||||
"ForecastRecap.calculationDate",,,
|
||||
"ForecastRecap.company",,,
|
||||
"ForecastRecap.currency",,,
|
||||
"ForecastRecap.endingBalance",,,
|
||||
"ForecastRecap.fromDate",,,
|
||||
"ForecastRecap.operationDetails",,,
|
||||
"ForecastRecap.opportunitiesTypeSelect",,,
|
||||
"ForecastRecap.startingBalance",,,
|
||||
"ForecastRecap.title",,,
|
||||
"ForecastRecap.toDate",,,
|
||||
"ForecastRecapLine.balance",,,
|
||||
"Forecasts","Voorspellingen",,
|
||||
"Forecasts generated","Prognoses gegenereerd",,
|
||||
"Format",,,
|
||||
"From","Van",,
|
||||
"Generate","Genereer",,
|
||||
"Invalid dates","Ongeldige data",,
|
||||
"Invoice",,,
|
||||
"Is report","Is rapport",,
|
||||
"Line","Lijn",,
|
||||
"Lines","Lijnen",,
|
||||
"Marges","Schoonmaak",,
|
||||
"No","Nee",,
|
||||
"ODS",,,
|
||||
"PDF",,,
|
||||
"Periodicity","Periodiciteit",,
|
||||
"Please select a company","Selecteer een bedrijf",,
|
||||
"Populate","Bevolken",,
|
||||
"Previsional Marges","Previsionelearges",,
|
||||
"Previsional Sales","Voorlopige verkoop",,
|
||||
"Previsional Spending","Voorlopige uitgaven",,
|
||||
"Print",,,
|
||||
"Purchase order",,,
|
||||
"Realized","Gerealiseerd",,
|
||||
"Reason","Reden",,
|
||||
"Related to",,,
|
||||
"Related to select",,,
|
||||
"Reports",,,
|
||||
"Sale order",,,
|
||||
"Sales","Verkoop",,
|
||||
"SalesMan","Verkoper",,
|
||||
"Seq.",,,
|
||||
"Spending","Uitgaven",,
|
||||
"Starting Balance","Startbalans",,
|
||||
"Take into account opportunies","Houd rekening met opportuniteiten",,
|
||||
"The company %s doesn't have any configured sequence for ForcastRecap",,,
|
||||
"To","Naar",,
|
||||
"Type","Type",,
|
||||
"Update","Update",,
|
||||
"Worst","Ergst",,
|
||||
"XLS",,,
|
||||
"Yes","Ja",,
|
||||
"value:Cash management","waarde:Kasmiddelenbeheer",,
|
||||
|
@ -0,0 +1,101 @@
|
||||
"key","message","comment","context"
|
||||
"Amount","Kwota",,
|
||||
"Auto","Automatycznie",,
|
||||
"Bank","Bank",,
|
||||
"Base","Podstawa",,
|
||||
"Best","Najlepszy",,
|
||||
"Both","obydwu.",,
|
||||
"Calculation Date",,,
|
||||
"Cash management","Zarządzanie środkami pieniężnymi",,
|
||||
"Comments","Komentarze",,
|
||||
"Company","Firma",,
|
||||
"Configuration","Konfiguracja",,
|
||||
"Confirmed","Potwierdzone",,
|
||||
"Currency","Waluta",,
|
||||
"Current balance","Saldo bieżące",,
|
||||
"Date","Data",,
|
||||
"Details","Szczegóły",,
|
||||
"Display","Wyświetlacz",,
|
||||
"Ending Balance","Bilans zamknięcia",,
|
||||
"Estimated date","Szacowana data",,
|
||||
"Estimated payment date","Szacowana data płatności",,
|
||||
"Expected","Oczekiwany",,
|
||||
"Expense",,,
|
||||
"Forecast","Prognoza",,
|
||||
"Forecast Assistant","Asystent prognozowania",,
|
||||
"Forecast Assistants","Asystenci prognoz",,
|
||||
"Forecast Reasons","Przyczyny prognoz",,
|
||||
"Forecast Recap","Prognoza Przekształcenie",,
|
||||
"Forecast Recaps","Przekształcenia prognoz",,
|
||||
"Forecast Report","Sprawozdanie z prognozy",,
|
||||
"Forecast Reports","Sprawozdania z prognozy",,
|
||||
"Forecast generator","Generator prognoz",,
|
||||
"Forecast reason","Przyczyna prognozy",,
|
||||
"Forecast reasons","Przyczyny prognozowania",,
|
||||
"Forecast recap","Przekształcenie prognozy",,
|
||||
"ForecastLine.amount",,,
|
||||
"ForecastLine.balance",,,
|
||||
"ForecastLine.estimatedDate",,,
|
||||
"ForecastLine.relatedToName",,,
|
||||
"ForecastLine.type",,,
|
||||
"ForecastLineType.in",,,
|
||||
"ForecastLineType.out",,,
|
||||
"ForecastOpportunitiesType.base",,,
|
||||
"ForecastOpportunitiesType.best",,,
|
||||
"ForecastOpportunitiesType.no",,,
|
||||
"ForecastOpportunitiesType.worst",,,
|
||||
"ForecastRecap","PrognozaRecap",,
|
||||
"ForecastRecap.bankDetailsIban",,,
|
||||
"ForecastRecap.calculationDate",,,
|
||||
"ForecastRecap.company",,,
|
||||
"ForecastRecap.currency",,,
|
||||
"ForecastRecap.endingBalance",,,
|
||||
"ForecastRecap.fromDate",,,
|
||||
"ForecastRecap.operationDetails",,,
|
||||
"ForecastRecap.opportunitiesTypeSelect",,,
|
||||
"ForecastRecap.startingBalance",,,
|
||||
"ForecastRecap.title",,,
|
||||
"ForecastRecap.toDate",,,
|
||||
"ForecastRecapLine.balance",,,
|
||||
"Forecasts","Prognozy",,
|
||||
"Forecasts generated","Wygenerowane prognozy",,
|
||||
"Format",,,
|
||||
"From","Od",,
|
||||
"Generate","Generuj",,
|
||||
"Invalid dates","Nieważne daty",,
|
||||
"Invoice",,,
|
||||
"Is report","Czy raport jest raportem?",,
|
||||
"Line","Linia",,
|
||||
"Lines","Linie",,
|
||||
"Marges","Marże",,
|
||||
"No","Nie",,
|
||||
"ODS",,,
|
||||
"PDF",,,
|
||||
"Periodicity","Okresowość",,
|
||||
"Please select a company","Proszę wybrać firmę",,
|
||||
"Populate","Populacja",,
|
||||
"Previsional Marges","Marże prewencyjne",,
|
||||
"Previsional Sales","Sprzedaż prewencyjna",,
|
||||
"Previsional Spending","Wydatki prewencyjne",,
|
||||
"Print",,,
|
||||
"Purchase order",,,
|
||||
"Realized","Zrealizowane",,
|
||||
"Reason","Uzasadnienie",,
|
||||
"Related to",,,
|
||||
"Related to select",,,
|
||||
"Reports",,,
|
||||
"Sale order",,,
|
||||
"Sales","Sprzedaż",,
|
||||
"SalesMan","SalesMan",,
|
||||
"Seq.",,,
|
||||
"Spending","Wydatki",,
|
||||
"Starting Balance","Bilans początkowy",,
|
||||
"Take into account opportunies","Uwzględnić możliwości",,
|
||||
"The company %s doesn't have any configured sequence for ForcastRecap",,,
|
||||
"To","Do",,
|
||||
"Type","Typ",,
|
||||
"Update","Aktualizacja",,
|
||||
"Worst","Najgorszy",,
|
||||
"XLS",,,
|
||||
"Yes","Tak",,
|
||||
"value:Cash management","wartość: Zarządzanie środkami pieniężnymi",,
|
||||
|
@ -0,0 +1,101 @@
|
||||
"key","message","comment","context"
|
||||
"Amount","Montante",,
|
||||
"Auto","Auto",,
|
||||
"Bank","Banco",,
|
||||
"Base","Base",,
|
||||
"Best","Melhor",,
|
||||
"Both","Ambos",,
|
||||
"Calculation Date",,,
|
||||
"Cash management","Administração de caixa",,
|
||||
"Comments","Comentários",,
|
||||
"Company","Empresa",,
|
||||
"Configuration","Configuração",,
|
||||
"Confirmed","Confirmado",,
|
||||
"Currency","Moeda",,
|
||||
"Current balance","Saldo atual",,
|
||||
"Date","Data",,
|
||||
"Details","Detalhes",,
|
||||
"Display","Exibição",,
|
||||
"Ending Balance","Saldo Final",,
|
||||
"Estimated date","Data estimada",,
|
||||
"Estimated payment date","Data estimada de pagamento",,
|
||||
"Expected","Previsto",,
|
||||
"Expense",,,
|
||||
"Forecast","Previsão",,
|
||||
"Forecast Assistant","Assistente de Previsões",,
|
||||
"Forecast Assistants","Assistentes de previsão",,
|
||||
"Forecast Reasons","Razões da previsão",,
|
||||
"Forecast Recap","Reformulação da previsão",,
|
||||
"Forecast Recaps","Previsões reformuladas",,
|
||||
"Forecast Report","Relatório de previsão",,
|
||||
"Forecast Reports","Relatórios de previsão",,
|
||||
"Forecast generator","Gerador de previsões",,
|
||||
"Forecast reason","Motivo da previsão",,
|
||||
"Forecast reasons","Razões de previsão",,
|
||||
"Forecast recap","Reformulação da previsão",,
|
||||
"ForecastLine.amount",,,
|
||||
"ForecastLine.balance",,,
|
||||
"ForecastLine.estimatedDate",,,
|
||||
"ForecastLine.relatedToName",,,
|
||||
"ForecastLine.type",,,
|
||||
"ForecastLineType.in",,,
|
||||
"ForecastLineType.out",,,
|
||||
"ForecastOpportunitiesType.base",,,
|
||||
"ForecastOpportunitiesType.best",,,
|
||||
"ForecastOpportunitiesType.no",,,
|
||||
"ForecastOpportunitiesType.worst",,,
|
||||
"ForecastRecap","ForecastRecap",,
|
||||
"ForecastRecap.bankDetailsIban",,,
|
||||
"ForecastRecap.calculationDate",,,
|
||||
"ForecastRecap.company",,,
|
||||
"ForecastRecap.currency",,,
|
||||
"ForecastRecap.endingBalance",,,
|
||||
"ForecastRecap.fromDate",,,
|
||||
"ForecastRecap.operationDetails",,,
|
||||
"ForecastRecap.opportunitiesTypeSelect",,,
|
||||
"ForecastRecap.startingBalance",,,
|
||||
"ForecastRecap.title",,,
|
||||
"ForecastRecap.toDate",,,
|
||||
"ForecastRecapLine.balance",,,
|
||||
"Forecasts","Previsões",,
|
||||
"Forecasts generated","Previsões geradas",,
|
||||
"Format",,,
|
||||
"From","De",,
|
||||
"Generate","Gerar",,
|
||||
"Invalid dates","Datas inválidas",,
|
||||
"Invoice",,,
|
||||
"Is report","É relatório",,
|
||||
"Line","Linha",,
|
||||
"Lines","Linhas",,
|
||||
"Marges","Marges",,
|
||||
"No","Não",,
|
||||
"ODS",,,
|
||||
"PDF",,,
|
||||
"Periodicity","Periodicidade",,
|
||||
"Please select a company","Selecione uma empresa",,
|
||||
"Populate","População",,
|
||||
"Previsional Marges","Margens Previsionais",,
|
||||
"Previsional Sales","Vendas Previsionais",,
|
||||
"Previsional Spending","Gastos Previsionais",,
|
||||
"Print",,,
|
||||
"Purchase order",,,
|
||||
"Realized","Realizado",,
|
||||
"Reason","Razão",,
|
||||
"Related to",,,
|
||||
"Related to select",,,
|
||||
"Reports",,,
|
||||
"Sale order",,,
|
||||
"Sales","Vendas",,
|
||||
"SalesMan","SalesMan",,
|
||||
"Seq.",,,
|
||||
"Spending","Gastos",,
|
||||
"Starting Balance","Saldo inicial",,
|
||||
"Take into account opportunies","Ter em conta as oportunidades",,
|
||||
"The company %s doesn't have any configured sequence for ForcastRecap",,,
|
||||
"To","Para",,
|
||||
"Type","Tipo de",,
|
||||
"Update","Atualização",,
|
||||
"Worst","Pior",,
|
||||
"XLS",,,
|
||||
"Yes","Sim",,
|
||||
"value:Cash management","value:Administração de caixa",,
|
||||
|
@ -0,0 +1,101 @@
|
||||
"key","message","comment","context"
|
||||
"Amount","Сумма",,
|
||||
"Auto","Авто",,
|
||||
"Bank","Банк",,
|
||||
"Base","База",,
|
||||
"Best","Лучший",,
|
||||
"Both","Оба",,
|
||||
"Calculation Date",,,
|
||||
"Cash management","Управление денежной наличностью",,
|
||||
"Comments","Комментарии",,
|
||||
"Company","Компания",,
|
||||
"Configuration","Конфигурация",,
|
||||
"Confirmed","Подтверждённый",,
|
||||
"Currency","Валюта",,
|
||||
"Current balance","Текущий баланс",,
|
||||
"Date","Дата",,
|
||||
"Details","Детали",,
|
||||
"Display","дисплей",,
|
||||
"Ending Balance","Конец баланса",,
|
||||
"Estimated date","Расчетная дата",,
|
||||
"Estimated payment date","Расчетная дата оплаты",,
|
||||
"Expected","Ожидаемый",,
|
||||
"Expense",,,
|
||||
"Forecast","Прогноз",,
|
||||
"Forecast Assistant","Помощник по прогнозированию",,
|
||||
"Forecast Assistants","Помощники по прогнозированию",,
|
||||
"Forecast Reasons","Прогнозные причины",,
|
||||
"Forecast Recap","Резюме прогноза",,
|
||||
"Forecast Recaps","Прогнозы Повторные расчеты",,
|
||||
"Forecast Report","Прогнозный доклад",,
|
||||
"Forecast Reports","Прогнозные отчеты",,
|
||||
"Forecast generator","Генератор прогнозов",,
|
||||
"Forecast reason","Прогнозная причина",,
|
||||
"Forecast reasons","Прогнозные причины",,
|
||||
"Forecast recap","Резюме прогноза",,
|
||||
"ForecastLine.amount",,,
|
||||
"ForecastLine.balance",,,
|
||||
"ForecastLine.estimatedDate",,,
|
||||
"ForecastLine.relatedToName",,,
|
||||
"ForecastLine.type",,,
|
||||
"ForecastLineType.in",,,
|
||||
"ForecastLineType.out",,,
|
||||
"ForecastOpportunitiesType.base",,,
|
||||
"ForecastOpportunitiesType.best",,,
|
||||
"ForecastOpportunitiesType.no",,,
|
||||
"ForecastOpportunitiesType.worst",,,
|
||||
"ForecastRecap","ForecastRecap",,
|
||||
"ForecastRecap.bankDetailsIban",,,
|
||||
"ForecastRecap.calculationDate",,,
|
||||
"ForecastRecap.company",,,
|
||||
"ForecastRecap.currency",,,
|
||||
"ForecastRecap.endingBalance",,,
|
||||
"ForecastRecap.fromDate",,,
|
||||
"ForecastRecap.operationDetails",,,
|
||||
"ForecastRecap.opportunitiesTypeSelect",,,
|
||||
"ForecastRecap.startingBalance",,,
|
||||
"ForecastRecap.title",,,
|
||||
"ForecastRecap.toDate",,,
|
||||
"ForecastRecapLine.balance",,,
|
||||
"Forecasts","Прогнозы",,
|
||||
"Forecasts generated","Созданные прогнозы",,
|
||||
"Format",,,
|
||||
"From","От",,
|
||||
"Generate","Генерировать",,
|
||||
"Invalid dates","Недействительные даты",,
|
||||
"Invoice",,,
|
||||
"Is report","это отчет",,
|
||||
"Line","Линия",,
|
||||
"Lines","Линии",,
|
||||
"Marges","Марджи",,
|
||||
"No","Нет",,
|
||||
"ODS",,,
|
||||
"PDF",,,
|
||||
"Periodicity","Периодичность",,
|
||||
"Please select a company","Пожалуйста, выберите компанию",,
|
||||
"Populate","Население",,
|
||||
"Previsional Marges","Превизионные маржи",,
|
||||
"Previsional Sales","Превизиональные продажи",,
|
||||
"Previsional Spending","Расходы подразделений",,
|
||||
"Print",,,
|
||||
"Purchase order",,,
|
||||
"Realized","Реализован",,
|
||||
"Reason","Причина",,
|
||||
"Related to",,,
|
||||
"Related to select",,,
|
||||
"Reports",,,
|
||||
"Sale order",,,
|
||||
"Sales","Продажи",,
|
||||
"SalesMan","Коммерсант",,
|
||||
"Seq.",,,
|
||||
"Spending","Расходы",,
|
||||
"Starting Balance","Начальный баланс",,
|
||||
"Take into account opportunies","Принимать во внимание возможности",,
|
||||
"The company %s doesn't have any configured sequence for ForcastRecap",,,
|
||||
"To","К",,
|
||||
"Type","Тип",,
|
||||
"Update","Обновить",,
|
||||
"Worst","Худший",,
|
||||
"XLS",,,
|
||||
"Yes","Да",,
|
||||
"value:Cash management","стоимость:Управление денежными средствами",,
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<csv-inputs xmlns="http://axelor.com/xml/ns/data-import"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/data-import http://axelor.com/xml/ns/data-import/data-import_5.2.xsd">
|
||||
|
||||
<input file="cash-management_role.csv" separator=";" type="com.axelor.auth.db.Role" search="self.name = :name"/>
|
||||
|
||||
<input file="cash-management_permission.csv" separator=";" type="com.axelor.auth.db.Permission" search="self.name = :name" call="com.axelor.csv.script.ImportPermission:importPermissionToRole">
|
||||
<bind to="canRead" eval="can_read == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canWrite" eval="can_write == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canCreate" eval="can_create == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canRemove" eval="can_remove == 'x' ? 'true' : 'false'"/>
|
||||
<bind to="canExport" eval="can_export == 'x' ? 'true' : 'false'"/>
|
||||
</input>
|
||||
|
||||
<input file="cash-management_metaMenu.csv" separator=";" type="com.axelor.meta.db.MetaMenu" search="self.name = :name" update="true">
|
||||
<bind column="roles" to="roles" search="self.name in :roles" eval="roles.split('\\|') as List"/>
|
||||
</input>
|
||||
|
||||
</csv-inputs>
|
||||
|
||||
@ -0,0 +1,8 @@
|
||||
"name";"roles"
|
||||
"forecast-root";"Cash Management Manager|Cash Management User|Cash Management Read"
|
||||
"forecast-root-forecast";"Cash Management Manager|Cash Management User|Cash Management Read"
|
||||
"forecast-root-forecast-recap";"Cash Management Manager|Cash Management User|Cash Management Read"
|
||||
"forecast-root-forecast-report";"Cash Management Manager|Cash Management User|Cash Management Read"
|
||||
"forecast-conf";"Cash Management Manager"
|
||||
"forecast-conf-forecast-generator";"Cash Management Manager"
|
||||
"forecast-conf-forecast-reason";"Cash Management Manager"
|
||||
|
@ -0,0 +1,16 @@
|
||||
"name";"object";"can_read";"can_write";"can_create";"can_remove";"can_export";"condition";"conditionParams";"roleName"
|
||||
"perm.cash.management.Forecast.r";"com.axelor.apps.cash.management.db.Forecast";"x";;;;;"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Cash Management Read"
|
||||
"perm.cash.management.ForecastReason.r";"com.axelor.apps.cash.management.db.ForecastReason";"x";;;;;;;"Cash Management Read"
|
||||
"perm.cash.management.ForecastRecap.r";"com.axelor.apps.cash.management.db.ForecastRecap";"x";;;;;"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Cash Management Read"
|
||||
"perm.cash.management.ForecastRecapLine.r";"com.axelor.apps.cash.management.db.ForecastRecapLine";"x";;;;;;;"Cash Management Read"
|
||||
"perm.cash.management.ForecastGenerator.r";"com.axelor.apps.cash.management.db.ForecastGenerator";"x";;;;;"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Cash Management Read"
|
||||
"perm.cash.management.Forecast.rwc";"com.axelor.apps.cash.management.db.Forecast";"x";"x";"x";;;"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Cash Management User"
|
||||
"perm.cash.management.ForecastReason.rwc";"com.axelor.apps.cash.management.db.ForecastReason";"x";"x";"x";;;;;"Cash Management User"
|
||||
"perm.cash.management.ForecastRecap.rwc";"com.axelor.apps.cash.management.db.ForecastRecap";"x";"x";"x";;;"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Cash Management User"
|
||||
"perm.cash.management.ForecastRecapLine.rwc";"com.axelor.apps.cash.management.db.ForecastRecapLine";"x";"x";"x";;;;;"Cash Management User"
|
||||
"perm.cash.management.ForecastGenerator.rwc";"com.axelor.apps.cash.management.db.ForecastGenerator";"x";"x";"x";;;"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Cash Management User"
|
||||
"perm.cash.management.Forecast.rwcde";"com.axelor.apps.cash.management.db.Forecast";"x";"x";"x";"x";"x";"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Cash Management Manager"
|
||||
"perm.cash.management.ForecastReason.rwcde";"com.axelor.apps.cash.management.db.ForecastReason";"x";"x";"x";"x";"x";;;"Cash Management Manager"
|
||||
"perm.cash.management.ForecastRecap.rwcde";"com.axelor.apps.cash.management.db.ForecastRecap";"x";"x";"x";"x";"x";"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Cash Management Manager"
|
||||
"perm.cash.management.ForecastRecapLine.rwcde";"com.axelor.apps.cash.management.db.ForecastRecapLine";"x";"x";"x";"x";"x";;;"Cash Management Manager"
|
||||
"perm.cash.management.ForecastGenerator.rwcde";"com.axelor.apps.cash.management.db.ForecastGenerator";"x";"x";"x";"x";"x";"self.company.id in (?)";"__user__.companySet.id.plus(0)";"Cash Management Manager"
|
||||
|
@ -0,0 +1,4 @@
|
||||
"name";"description"
|
||||
"Cash Management Read";
|
||||
"Cash Management User";
|
||||
"Cash Management Manager";
|
||||
|
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<chart name="chart.forecast.report.sales" title="Previsional Sales">
|
||||
<dataset type="rpc">com.axelor.apps.cash.management.web.ForecastRecapController:sales</dataset>
|
||||
<category key="date" type="date" />
|
||||
<series key="amount" groupBy="type" type="bar"/>
|
||||
</chart>
|
||||
|
||||
<chart name="chart.forecast.report.spending" title="Previsional Spending">
|
||||
<dataset type="rpc">com.axelor.apps.cash.management.web.ForecastRecapController:spending</dataset>
|
||||
<category key="date" type="date" />
|
||||
<series key="amount" type="bar"/>
|
||||
</chart>
|
||||
|
||||
<chart name="chart.forecast.report.marges" title="Previsional Marges">
|
||||
<dataset type="rpc">com.axelor.apps.cash.management.web.ForecastRecapController:marges</dataset>
|
||||
<category key="date" type="date" />
|
||||
<series key="amount" type="bar"/>
|
||||
</chart>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="forecast-grid" title="Forecasts" model="com.axelor.apps.cash.management.db.Forecast">
|
||||
<field name="company" if="__config__.app.getApp('base').getEnableMultiCompany()"/>
|
||||
<field name="bankDetails"/>
|
||||
<field name="typeSelect"/>
|
||||
<field name="amount" aggregate="sum"/>
|
||||
<field name="estimatedDate"/>
|
||||
<field name="realizedSelect"/>
|
||||
</grid>
|
||||
|
||||
<form name="forecast-form" title="Forecast" model="com.axelor.apps.cash.management.db.Forecast"
|
||||
onNew="action-forecast-record-default-on-new">
|
||||
<panel name="mainPanel" >
|
||||
<field name="company" canEdit="false" onChange="action-forecast-record-bank"/>
|
||||
<field name="bankDetails" onSelect="action-accounting-batch-attrs-bank-details-domain"/>
|
||||
<field name="typeSelect"/>
|
||||
<field name="amount"/>
|
||||
<field name="estimatedDate"/>
|
||||
<field name="forecastReason"/>
|
||||
<field name="realizedSelect" widget="RadioSelect"/>
|
||||
<field name="comments" colSpan="12"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<action-record name="action-forecast-record-default-on-new" model="com.axelor.apps.cash.management.db.Forecast">
|
||||
<field name="company" expr="eval: __user__.activeCompany"/>
|
||||
<field name="bankDetails" expr="eval: __user__.activeCompany?.defaultBankDetails" if="__user__.activeCompany?.defaultBankDetails?.active"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-forecast-record-bank" model="com.axelor.apps.cash.management.db.Forecast">
|
||||
<field name="bankDetails" expr="eval: company?.defaultBankDetails" if="company?.defaultBankDetails?.active"/>
|
||||
</action-record>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="forecast-generator-grid" title="Forecast Assistants" model="com.axelor.apps.cash.management.db.ForecastGenerator">
|
||||
<field name="company" if="__config__.app.getApp('base').getEnableMultiCompany()"/>
|
||||
<field name="bankDetails"/>
|
||||
<field name="typeSelect"/>
|
||||
<field name="amount" aggregate="sum"/>
|
||||
<field name="fromDate"/>
|
||||
<field name="toDate"/>
|
||||
<field name="periodicitySelect"/>
|
||||
</grid>
|
||||
|
||||
<form name="forecast-generator-form" title="Forecast Assistant" model="com.axelor.apps.cash.management.db.ForecastGenerator"
|
||||
onNew="action-forecast-generator-record-default-on-new">
|
||||
<panel name="mainPanel" >
|
||||
<button name="generateBtn" title="Generate" onClick="action-forecast-generator-validate-dates,save,action-forecast-generator-method-generate,action-forecast-generator-attrs-title-generate" colSpan="3" colOffset="9"/>
|
||||
<field name="company" canEdit="false" onChange="action-forecast-generator-record-bank"/>
|
||||
<field name="bankDetails" onSelect="action-accounting-batch-attrs-bank-details-domain"/>
|
||||
<field name="typeSelect"/>
|
||||
<field name="amount"/>
|
||||
<field name="fromDate" onChange="action-forecast-generator-validate-dates"/>
|
||||
<field name="toDate" onChange="action-forecast-generator-validate-dates"/>
|
||||
<field name="periodicitySelect"/>
|
||||
<field name="forecastReason"/>
|
||||
<field name="realizedSelect" widget="RadioSelect"/>
|
||||
<field name="comments" colSpan="12"/>
|
||||
<panel-dashlet name="forecastListPanel" title="Forecasts generated" action="action-forecast-generator-view-show-forecast-list" showIf="id" colSpan="12"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<action-record name="action-forecast-generator-record-default-on-new" model="com.axelor.apps.cash.management.db.ForecastGenerator">
|
||||
<field name="company" expr="eval: __user__.activeCompany"/>
|
||||
<field name="bankDetails" expr="eval: __user__.activeCompany?.defaultBankDetails" if="__user__.activeCompany?.defaultBankDetails?.active"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-forecast-generator-record-bank" model="com.axelor.apps.cash.management.db.ForecastGenerator">
|
||||
<field name="bankDetails" expr="eval: company?.defaultBankDetails" if="company?.defaultBankDetails?.active"/>
|
||||
</action-record>
|
||||
|
||||
<action-attrs name="action-forecast-generator-attrs-title-generate">
|
||||
<attribute name="title" for="generateBtn" expr="Actualize"/>
|
||||
</action-attrs>
|
||||
|
||||
<action-method name="action-forecast-generator-method-generate">
|
||||
<call class="com.axelor.apps.cash.management.web.ForecastController" method="generate"/>
|
||||
</action-method>
|
||||
|
||||
<action-validate name="action-forecast-generator-validate-dates">
|
||||
<error message="Invalid dates" if="toDate != null && fromDate != null && toDate < fromDate" action="action-forecast-generator-null-toDate"/>
|
||||
</action-validate>
|
||||
|
||||
<action-record name="action-forecast-generator-null-toDate" model="com.axelor.apps.cash.management.db.ForecastGenerator">
|
||||
<field name="toDate" expr="eval: null"/>
|
||||
</action-record>
|
||||
|
||||
<action-view name="action-forecast-generator-view-show-forecast-list" title="Forecasts generated" model="com.axelor.apps.cash.management.db.Forecast">
|
||||
<view type="grid" name="forecast-grid"/>
|
||||
<view type="form" name="forecast-form"/>
|
||||
<domain>self.forecastGenerator.id = :forecastGeneratorId</domain>
|
||||
<context name="forecastGeneratorId" expr="eval: __self__?.id"/>
|
||||
</action-view>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="forecast-reason-grid" title="Forecast reasons" model="com.axelor.apps.cash.management.db.ForecastReason">
|
||||
<field name="reason"/>
|
||||
</grid>
|
||||
|
||||
<form name="forecast-reason-form" title="Forecast reason" model="com.axelor.apps.cash.management.db.ForecastReason">
|
||||
<panel name="mainPanel" >
|
||||
<field name="reason" colSpan="12"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,142 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="forecast-recap-grid" title="Forecast Recaps" model="com.axelor.apps.cash.management.db.ForecastRecap">
|
||||
<field name="company" if="__config__.app.getApp('base').getEnableMultiCompany()"/>
|
||||
<field name="bankDetails" if="__config__.app.getApp('base').getManageMultiBanks()"/>
|
||||
<field name="fromDate"/>
|
||||
<field name="toDate"/>
|
||||
</grid>
|
||||
|
||||
<form name="forecast-recap-form" title="Forecast Recap" model="com.axelor.apps.cash.management.db.ForecastRecap"
|
||||
onNew="action-forecast-recap-record-default-on-new" width="large">
|
||||
<toolbar>
|
||||
<button name="printBtn" title="Print" icon="fa-print" onClick="save,action-forecast-recap-view-reports-wizard"/>
|
||||
</toolbar>
|
||||
<panel name="mainPanel" >
|
||||
<panel name="seqPanel" colSpan="12">
|
||||
<field name="forecastRecapSeq" showTitle="false" colSpan="12" css="label-bold bold large"/>
|
||||
</panel>
|
||||
<field name="company" canEdit="false" onChange="action-forecast-record-bank, action-forecast-recap-record-currency"/>
|
||||
<field name="bankDetails" onSelect="action-accounting-batch-attrs-bank-details-domain" if="__config__.app.getApp('base').getManageMultiBanks()"/>
|
||||
<field name="fromDate" onChange="action-forecast-recap-validate-dates"/>
|
||||
<field name="toDate" onChange="action-forecast-recap-validate-dates"/>
|
||||
<field name="opportunitiesTypeSelect"/>
|
||||
<field name="startingBalance"/>
|
||||
<button name="populateRecapBtn" title="Populate" onClick="action-forecast-recap-validate-dates-before-populate,save,action-forecast-recap-method-populate"/>
|
||||
<panel-dashlet name="forecastRecapLineListPanel" showIf="id" height="500" action="action-forecast-recap-view-show-forecast-recap-line-list" colSpan="12"/>
|
||||
<field name="endingBalance" readonly="true" colSpan="4"/>
|
||||
<field name="currency" readonly="true" colSpan="4"/>
|
||||
<field name="calculationDate" colSpan="4"/>
|
||||
<field name="isReport" hidden="true"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<form model="com.axelor.apps.base.db.Wizard" title="Reports" name="forecast-recap-print-wizard-form">
|
||||
<panel name="mainPanel">
|
||||
<field name="$reportTypeSelect" title="Format" selection="forecast.recap.report.type.select" colSpan="3" type="string"/>
|
||||
<button name="printBtn" title="Print" onClick="action-forecast-recap-method-print" readonlyIf="$reportTypeSelect == null" colSpan="3"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<grid name="forecast-report-grid" title="Forecast Reports" model="com.axelor.apps.cash.management.db.ForecastRecap">
|
||||
<field name="company"/>
|
||||
<field name="bankDetails" if="__config__.app.getApp('base').getManageMultiBanks()"/>
|
||||
<field name="fromDate"/>
|
||||
<field name="toDate"/>
|
||||
</grid>
|
||||
|
||||
<form name="forecast-report-form" title="Forecast Report" model="com.axelor.apps.cash.management.db.ForecastRecap"
|
||||
onNew="action-forecast-report-record-default-on-new">
|
||||
<panel name="mainPanel" >
|
||||
<field name="company" canEdit="false" onChange="action-forecast-record-bank, action-forecast-recap-record-currency" colSpan="4" required="true"/>
|
||||
<field name="bankDetails" onSelect="action-accounting-batch-attrs-bank-details-domain" if="__config__.app.getApp('base').getManageMultiBanks()" colSpan="4"/>
|
||||
<field name="salesMan" canNew="false" canEdit="false" canView="false" colSpan="4"/>
|
||||
<field name="fromDate" onChange="action-forecast-recap-validate-dates" required="true"/>
|
||||
<field name="toDate" onChange="action-forecast-recap-validate-dates" required="true"/>
|
||||
<field name="opportunitiesTypeSelect" colSpan="12" width="50%"/>
|
||||
<field name="displayTypeSelect"/>
|
||||
<button name="updateBtn" title="Update" onClick="save, action-forecast-report-refresh"/>
|
||||
<panel-dashlet name="reportDashletSalesPanel" action="forecast.report.sales.dashlet" colSpan="12" hideIf="displayTypeSelect == 2"/>
|
||||
<panel-dashlet name="reportDashletSpendingPanel" action="forecast.report.spending.dashlet" colSpan="12" hideIf="displayTypeSelect == 1"/>
|
||||
<panel-dashlet name="reportDashletMargesPanel" action="forecast.report.marges.dashlet" colSpan="12" hideIf="displayTypeSelect != 3"/>
|
||||
<field name="isReport" hidden="true"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<action-view title="Sales" name="forecast.report.sales.dashlet">
|
||||
<view type="chart" name="chart.forecast.report.sales"/>
|
||||
<context name="_id" expr="eval: id" />
|
||||
</action-view>
|
||||
|
||||
<action-view title="Spending" name="forecast.report.spending.dashlet">
|
||||
<view type="chart" name="chart.forecast.report.spending"/>
|
||||
<context name="_id" expr="eval: id" />
|
||||
</action-view>
|
||||
|
||||
<action-view title="Marges" name="forecast.report.marges.dashlet">
|
||||
<view type="chart" name="chart.forecast.report.marges"/>
|
||||
<context name="_id" expr="eval: id" />
|
||||
</action-view>
|
||||
|
||||
<action-view name="action-forecast-recap-view-show-forecast-recap-line-list" title="Details" model="com.axelor.apps.cash.management.db.ForecastRecapLine">
|
||||
<view type="grid" name="forecast-recap-line-grid"/>
|
||||
<view type="form" name="forecast-recap-line-form"/>
|
||||
<view-param name="limit" value="100"/>
|
||||
<domain>self.forecastRecap.id = :forecastRecap</domain>
|
||||
<context name="forecastRecap" expr="eval: __self__?.id"/>
|
||||
</action-view>
|
||||
|
||||
<action-attrs name="action-forecast-report-refresh">
|
||||
<attribute for="reportDashlet" name="refresh" expr="true"/>
|
||||
</action-attrs>
|
||||
|
||||
<action-record name="action-forecast-recap-record-currency" model="com.axelor.apps.cash.management.db.ForecastRecap">
|
||||
<field name="currency" expr="company?.currency"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-forecast-recap-record-default-on-new" model="com.axelor.apps.cash.management.db.ForecastRecap">
|
||||
<field name="company" expr="eval: __user__.activeCompany"/>
|
||||
<field name="currency" expr="eval: __user__.activeCompany?.currency"/>
|
||||
<field name="isReport" expr="eval: false"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-forecast-report-record-default-on-new" model="com.axelor.apps.cash.management.db.ForecastRecap">
|
||||
<field name="company" expr="eval: __user__.activeCompany"/>
|
||||
<field name="currency" expr="eval: __user__.activeCompany?.currency"/>
|
||||
<field name="isReport" expr="eval: true"/>
|
||||
</action-record>
|
||||
|
||||
<action-validate name="action-forecast-recap-validate-dates">
|
||||
<error message="Invalid dates" if="toDate != null && fromDate != null && toDate < fromDate" action="action-forecast-recap-null-toDate"/>
|
||||
</action-validate>
|
||||
|
||||
<action-record name="action-forecast-recap-null-toDate" model="com.axelor.apps.cash.management.db.ForecastRecap">
|
||||
<field name="toDate" expr="eval: null"/>
|
||||
</action-record>
|
||||
|
||||
<action-validate name="action-forecast-recap-validate-dates-before-populate">
|
||||
<error message="Invalid dates" if="toDate == null || fromDate == null"/>
|
||||
</action-validate>
|
||||
|
||||
<action-method name="action-forecast-recap-method-populate">
|
||||
<call class="com.axelor.apps.cash.management.web.ForecastRecapController" method="populate"/>
|
||||
</action-method>
|
||||
|
||||
<action-view name="action-forecast-recap-view-reports-wizard" title="Reports"
|
||||
model="com.axelor.apps.cash.management.db.ForecastRecap" >
|
||||
<view type="form" name="forecast-recap-print-wizard-form" />
|
||||
<view-param name="popup" value="true"/>
|
||||
<view-param name="show-toolbar" value="false"/>
|
||||
<view-param name="show-confirm" value="false" />
|
||||
<view-param name="popup-save" value="false"/>
|
||||
<context name="_forecastRecapId" expr="eval: id"/>
|
||||
</action-view>
|
||||
|
||||
<action-method name="action-forecast-recap-method-print">
|
||||
<call class="com.axelor.apps.cash.management.web.ForecastRecapController" method="print"/>
|
||||
</action-method>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<grid name="forecast-recap-line-grid" title="Lines" model="com.axelor.apps.cash.management.db.ForecastRecapLine" orderBy="estimatedDate,typeSelect,id">
|
||||
<field name="estimatedDate"/>
|
||||
<field name="typeSelect"/>
|
||||
<field name="relatedToSelectName"/>
|
||||
<field name="amount" aggregate="sum"/>
|
||||
<field name="balance"/>
|
||||
</grid>
|
||||
|
||||
<form name="forecast-recap-line-form" title="Line" model="com.axelor.apps.cash.management.db.ForecastRecapLine">
|
||||
<panel name="mainPanel" >
|
||||
<field name="estimatedDate"/>
|
||||
<field name="typeSelect"/>
|
||||
<field name="relatedToSelect" widget="RefSelect" x-related="relatedToSelectId" readonly="true"/>
|
||||
<field name="amount"/>
|
||||
<field name="balance"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<menuitem name="forecast-root" title="Cash management" order="-86" if="__config__.app.isApp('cash-management')"
|
||||
icon="fa-money" icon-background="#e0a83c"/>
|
||||
|
||||
<menuitem name="forecast-root-forecast" order="10" parent="forecast-root"
|
||||
title="Forecasts" action="forecast.root.forecast" />
|
||||
|
||||
<action-view name="forecast.root.forecast" title="Forecasts"
|
||||
model="com.axelor.apps.cash.management.db.Forecast" >
|
||||
<view type="grid" name="forecast-grid" />
|
||||
<view type="form" name="forecast-form" />
|
||||
</action-view>
|
||||
|
||||
<menuitem name="forecast-root-forecast-recap" order="20" parent="forecast-root"
|
||||
title="Forecast Recaps" action="forecast.root.forecast.recap" />
|
||||
|
||||
<action-view name="forecast.root.forecast.recap" title="Forecast Recaps"
|
||||
model="com.axelor.apps.cash.management.db.ForecastRecap" >
|
||||
<view type="grid" name="forecast-recap-grid" />
|
||||
<view type="form" name="forecast-recap-form" />
|
||||
<domain>self.isReport != true</domain>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="forecast-root-forecast-report" order="30" parent="forecast-root" title="Forecast Reports" action="forecast.root.forecast.report" icon="fa-bar-chart"/>
|
||||
|
||||
<action-view name="forecast.root.forecast.report" title="Forecast Reports"
|
||||
model="com.axelor.apps.cash.management.db.ForecastRecap" >
|
||||
<view type="grid" name="forecast-report-grid" />
|
||||
<view type="form" name="forecast-report-form" />
|
||||
<domain>self.isReport = true</domain>
|
||||
</action-view>
|
||||
|
||||
<menuitem name="forecast-conf" title="Configuration" order="200" parent="forecast-root" icon="fa-cog"/>
|
||||
|
||||
<menuitem name="forecast-conf-forecast-generator" order="10" parent="forecast-conf"
|
||||
title="Forecast Assistants" action="forecast.conf.forecast.generator" />
|
||||
|
||||
<action-view name="forecast.conf.forecast.generator" title="Forecast Assistants"
|
||||
model="com.axelor.apps.cash.management.db.ForecastGenerator" >
|
||||
<view type="grid" name="forecast-generator-grid" />
|
||||
<view type="form" name="forecast-generator-form" />
|
||||
</action-view>
|
||||
|
||||
<menuitem name="forecast-conf-forecast-reason" order="20" parent="forecast-conf"
|
||||
title="Forecast Reasons" action="forecast.conf.forecast.reason" />
|
||||
|
||||
<action-view name="forecast.conf.forecast.reason" title="Forecast Reasons"
|
||||
model="com.axelor.apps.cash.management.db.ForecastReason" >
|
||||
<view type="grid" name="forecast-reason-grid" />
|
||||
<view type="form" name="forecast-reason-form" />
|
||||
</action-view>
|
||||
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
<action-record name="action-partner-record-set-default-cash-management" model="com.axelor.apps.base.db.Partner" if-module="axelor-cash-management">
|
||||
<field name="paymentDelay" expr="eval: __user__.activeCompany?.customerPaymentDelay" if="_isCustomer"/>
|
||||
<field name="paymentDelay" expr="eval: __user__.activeCompany?.supplierPaymentDelay" if="_isSupplier"/>
|
||||
</action-record>
|
||||
|
||||
</object-views>
|
||||
@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<object-views xmlns="http://axelor.com/xml/ns/object-views"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://axelor.com/xml/ns/object-views http://axelor.com/xml/ns/object-views/object-views_5.2.xsd">
|
||||
|
||||
|
||||
<selection name="forecast.realized.select">
|
||||
<option value="1">Yes</option>
|
||||
<option value="2">No</option>
|
||||
<option value="3">Auto</option>
|
||||
</selection>
|
||||
|
||||
<selection name="forecast.opportunities.type.select">
|
||||
<option value="1">No</option>
|
||||
<option value="2">Base</option>
|
||||
<option value="3">Worst</option>
|
||||
<option value="4">Best</option>
|
||||
</selection>
|
||||
|
||||
<selection name="display.type.select">
|
||||
<option value="1">Sales</option>
|
||||
<option value="2">Spending</option>
|
||||
<option value="3">Both</option>
|
||||
</selection>
|
||||
|
||||
<selection name="forecast.recap.line.related.to.select">
|
||||
<option value="com.axelor.apps.sale.db.SaleOrder" data-grid="sale-order-grid" data-form="sale-order-form">Sale order</option>
|
||||
<option value="com.axelor.apps.purchase.db.PurchaseOrder" data-grid="purchase-order-grid" data-form="purchase-order-form">Purchase order</option>
|
||||
<option value="com.axelor.apps.account.db.Invoice" data-grid="invoice-grid" data-form="invoice-form">Invoice</option>
|
||||
<option value="com.axelor.apps.hr.db.Expense" data-grid="expense-grid" data-form="expense-form">Expense</option>
|
||||
<option value="com.axelor.apps.cash.management.db.ForecastReason" data-grid="forecast-reason-grid" data-form="forecast-reason-form">Forecast reason</option>
|
||||
</selection>
|
||||
|
||||
<selection name="sequence.generic.code.select" id="cash.management.sequence.generic.code.select">
|
||||
<option value="forecastRecap">Forecast Recap</option>
|
||||
</selection>
|
||||
|
||||
<selection name="forecast.recap.report.type.select">
|
||||
<option value="pdf">PDF</option>
|
||||
<option value="xlsx">XLS</option>
|
||||
<option value="ods">ODS</option>
|
||||
</selection>
|
||||
|
||||
</object-views>
|
||||
Reference in New Issue
Block a user