initial commit
This commit is contained in:
@@ -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.suppliermanagement.exceptions;
|
||||
|
||||
public interface IExceptionMessage {
|
||||
|
||||
/** Purchase order supplier line service */
|
||||
static final String CURRENCY_CONVERSION_2 = /*$$(*/
|
||||
"WARNING : To Date must be after or equals to From Date" /*)*/;
|
||||
|
||||
/** Purchase order Controller */
|
||||
static final String PURCHASE_ORDER_1 = /*$$(*/ "Supplier's consulting's request created" /*)*/;
|
||||
|
||||
static final String PURCHASE_ORDER_2 = /*$$(*/ "Suppliers orders' generation over" /*)*/;
|
||||
}
|
||||
@@ -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.suppliermanagement.service;
|
||||
|
||||
import com.axelor.apps.base.db.Company;
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.base.db.repo.BlockingRepository;
|
||||
import com.axelor.apps.base.service.BlockingService;
|
||||
import com.axelor.apps.purchase.db.PurchaseOrderLine;
|
||||
import com.axelor.apps.purchase.exception.IExceptionMessage;
|
||||
import com.axelor.apps.purchase.service.PurchaseOrderLineServiceImpl;
|
||||
import com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine;
|
||||
import com.axelor.apps.suppliermanagement.db.repo.PurchaseOrderSupplierLineRepository;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class PurchaseOrderSupplierLineService {
|
||||
|
||||
@Inject PurchaseOrderSupplierLineRepository poSupplierLineRepo;
|
||||
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
public void accept(PurchaseOrderSupplierLine purchaseOrderSupplierLine) throws AxelorException {
|
||||
|
||||
PurchaseOrderLine purchaseOrderLine = purchaseOrderSupplierLine.getPurchaseOrderLine();
|
||||
|
||||
purchaseOrderLine.setEstimatedDelivDate(purchaseOrderSupplierLine.getEstimatedDelivDate());
|
||||
|
||||
Partner supplierPartner = purchaseOrderSupplierLine.getSupplierPartner();
|
||||
Company company = purchaseOrderLine.getPurchaseOrder().getCompany();
|
||||
if (Beans.get(BlockingService.class)
|
||||
.getBlocking(supplierPartner, company, BlockingRepository.PURCHASE_BLOCKING)
|
||||
!= null) {
|
||||
throw new AxelorException(
|
||||
TraceBackRepository.TYPE_FUNCTIONNAL,
|
||||
I18n.get(IExceptionMessage.SUPPLIER_BLOCKED),
|
||||
supplierPartner);
|
||||
}
|
||||
purchaseOrderLine.setSupplierPartner(supplierPartner);
|
||||
|
||||
purchaseOrderLine.setPrice(purchaseOrderSupplierLine.getPrice());
|
||||
purchaseOrderLine.setExTaxTotal(
|
||||
PurchaseOrderLineServiceImpl.computeAmount(
|
||||
purchaseOrderLine.getQty(), purchaseOrderLine.getPrice()));
|
||||
|
||||
purchaseOrderSupplierLine.setStateSelect(PurchaseOrderSupplierLineRepository.STATE_ACCEPTED);
|
||||
|
||||
poSupplierLineRepo.save(purchaseOrderSupplierLine);
|
||||
}
|
||||
|
||||
public PurchaseOrderSupplierLine create(Partner supplierPartner, BigDecimal price) {
|
||||
|
||||
return new PurchaseOrderSupplierLine(
|
||||
price, PurchaseOrderSupplierLineRepository.STATE_REQUESTED, supplierPartner);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
/*
|
||||
* 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.suppliermanagement.service;
|
||||
|
||||
import com.axelor.apps.base.db.Blocking;
|
||||
import com.axelor.apps.base.db.Company;
|
||||
import com.axelor.apps.base.db.Partner;
|
||||
import com.axelor.apps.base.db.Product;
|
||||
import com.axelor.apps.base.db.repo.BlockingRepository;
|
||||
import com.axelor.apps.base.db.repo.PriceListRepository;
|
||||
import com.axelor.apps.base.service.BlockingService;
|
||||
import com.axelor.apps.base.service.PartnerPriceListService;
|
||||
import com.axelor.apps.base.service.app.AppBaseService;
|
||||
import com.axelor.apps.purchase.db.PurchaseOrder;
|
||||
import com.axelor.apps.purchase.db.PurchaseOrderLine;
|
||||
import com.axelor.apps.purchase.db.SupplierCatalog;
|
||||
import com.axelor.apps.purchase.db.repo.PurchaseOrderLineRepository;
|
||||
import com.axelor.apps.purchase.db.repo.PurchaseOrderRepository;
|
||||
import com.axelor.apps.purchase.service.PurchaseOrderLineService;
|
||||
import com.axelor.apps.purchase.service.app.AppPurchaseService;
|
||||
import com.axelor.apps.stock.service.StockLocationService;
|
||||
import com.axelor.apps.supplychain.exception.IExceptionMessage;
|
||||
import com.axelor.apps.supplychain.service.PurchaseOrderServiceSupplychainImpl;
|
||||
import com.axelor.auth.AuthUtils;
|
||||
import com.axelor.exception.AxelorException;
|
||||
import com.axelor.exception.db.repo.TraceBackRepository;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class PurchaseOrderSupplierService {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
|
||||
|
||||
@Inject private PurchaseOrderSupplierLineService purchaseOrderSupplierLineService;
|
||||
|
||||
@Inject private PurchaseOrderServiceSupplychainImpl purchaseOrderServiceSupplychainImpl;
|
||||
|
||||
@Inject private PurchaseOrderLineService purchaseOrderLineService;
|
||||
|
||||
@Inject protected PurchaseOrderRepository poRepo;
|
||||
|
||||
@Transactional
|
||||
public void generateAllSuppliersRequests(PurchaseOrder purchaseOrder) {
|
||||
|
||||
for (PurchaseOrderLine purchaseOrderLine : purchaseOrder.getPurchaseOrderLineList()) {
|
||||
|
||||
this.generateSuppliersRequests(purchaseOrderLine);
|
||||
}
|
||||
poRepo.save(purchaseOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate supplier requests for one PurchaseOrderLine. Make sure to only call this function when
|
||||
* you are sure the line passed as argument has a valid purchaseOrder. Else, use the
|
||||
* generateSuppliersRequests(PurchaseOrderLine purchaseOrderLine, PurchaseOrder purchaseOrder)
|
||||
* format below.
|
||||
*
|
||||
* @param purchaseOrderLine
|
||||
*/
|
||||
@Transactional
|
||||
public void generateSuppliersRequests(PurchaseOrderLine purchaseOrderLine) {
|
||||
this.generateSuppliersRequests(purchaseOrderLine, purchaseOrderLine.getPurchaseOrder());
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void generateSuppliersRequests(
|
||||
PurchaseOrderLine purchaseOrderLine, PurchaseOrder purchaseOrder) {
|
||||
|
||||
if (purchaseOrder == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Product product = purchaseOrderLine.getProduct();
|
||||
Company company = purchaseOrder.getCompany();
|
||||
|
||||
if (Beans.get(AppPurchaseService.class).getAppPurchase().getManageSupplierCatalog()
|
||||
&& product != null
|
||||
&& product.getSupplierCatalogList() != null) {
|
||||
|
||||
for (SupplierCatalog supplierCatalog : product.getSupplierCatalogList()) {
|
||||
Partner supplierPartner = supplierCatalog.getSupplierPartner();
|
||||
Blocking blocking =
|
||||
Beans.get(BlockingService.class)
|
||||
.getBlocking(supplierPartner, company, BlockingRepository.PURCHASE_BLOCKING);
|
||||
if (blocking == null) {
|
||||
purchaseOrderLine.addPurchaseOrderSupplierLineListItem(
|
||||
purchaseOrderSupplierLineService.create(supplierPartner, supplierCatalog.getPrice()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Beans.get(PurchaseOrderLineRepository.class).save(purchaseOrderLine);
|
||||
}
|
||||
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
public void generateSuppliersPurchaseOrder(PurchaseOrder purchaseOrder) throws AxelorException {
|
||||
|
||||
if (purchaseOrder.getPurchaseOrderLineList() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<Partner, List<PurchaseOrderLine>> purchaseOrderLinesBySupplierPartner =
|
||||
this.splitBySupplierPartner(purchaseOrder.getPurchaseOrderLineList());
|
||||
|
||||
for (Partner supplierPartner : purchaseOrderLinesBySupplierPartner.keySet()) {
|
||||
|
||||
this.createPurchaseOrder(
|
||||
supplierPartner, purchaseOrderLinesBySupplierPartner.get(supplierPartner), purchaseOrder);
|
||||
}
|
||||
|
||||
poRepo.save(purchaseOrder);
|
||||
}
|
||||
|
||||
public Map<Partner, List<PurchaseOrderLine>> splitBySupplierPartner(
|
||||
List<PurchaseOrderLine> purchaseOrderLineList) throws AxelorException {
|
||||
|
||||
Map<Partner, List<PurchaseOrderLine>> purchaseOrderLinesBySupplierPartner = new HashMap<>();
|
||||
|
||||
for (PurchaseOrderLine purchaseOrderLine : purchaseOrderLineList) {
|
||||
|
||||
Partner supplierPartner = purchaseOrderLine.getSupplierPartner();
|
||||
|
||||
if (supplierPartner == null) {
|
||||
throw new AxelorException(
|
||||
purchaseOrderLine,
|
||||
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
||||
I18n.get(IExceptionMessage.SO_PURCHASE_1),
|
||||
purchaseOrderLine.getProductName());
|
||||
}
|
||||
|
||||
if (!purchaseOrderLinesBySupplierPartner.containsKey(supplierPartner)) {
|
||||
purchaseOrderLinesBySupplierPartner.put(
|
||||
supplierPartner, new ArrayList<PurchaseOrderLine>());
|
||||
}
|
||||
|
||||
purchaseOrderLinesBySupplierPartner.get(supplierPartner).add(purchaseOrderLine);
|
||||
}
|
||||
|
||||
return purchaseOrderLinesBySupplierPartner;
|
||||
}
|
||||
|
||||
@Transactional(rollbackOn = {Exception.class})
|
||||
public void createPurchaseOrder(
|
||||
Partner supplierPartner,
|
||||
List<PurchaseOrderLine> purchaseOrderLineList,
|
||||
PurchaseOrder parentPurchaseOrder)
|
||||
throws AxelorException {
|
||||
|
||||
LOG.debug(
|
||||
"Création d'une commande fournisseur depuis le devis fournisseur : {} et le fournisseur : {}",
|
||||
parentPurchaseOrder.getPurchaseOrderSeq(),
|
||||
supplierPartner.getFullName());
|
||||
|
||||
PurchaseOrder purchaseOrder =
|
||||
purchaseOrderServiceSupplychainImpl.createPurchaseOrder(
|
||||
AuthUtils.getUser(),
|
||||
parentPurchaseOrder.getCompany(),
|
||||
null,
|
||||
supplierPartner.getCurrency(),
|
||||
null,
|
||||
parentPurchaseOrder.getPurchaseOrderSeq(),
|
||||
parentPurchaseOrder.getExternalReference(),
|
||||
Beans.get(StockLocationService.class)
|
||||
.getDefaultReceiptStockLocation(parentPurchaseOrder.getCompany()),
|
||||
Beans.get(AppBaseService.class).getTodayDate(),
|
||||
Beans.get(PartnerPriceListService.class)
|
||||
.getDefaultPriceList(supplierPartner, PriceListRepository.TYPE_PURCHASE),
|
||||
supplierPartner,
|
||||
parentPurchaseOrder.getTradingName());
|
||||
|
||||
purchaseOrder.setParentPurchaseOrder(parentPurchaseOrder);
|
||||
|
||||
for (PurchaseOrderLine purchaseOrderLine : purchaseOrderLineList) {
|
||||
|
||||
purchaseOrder.addPurchaseOrderLineListItem(
|
||||
this.createPurchaseOrderLine(purchaseOrder, purchaseOrderLine));
|
||||
}
|
||||
|
||||
purchaseOrderServiceSupplychainImpl.computePurchaseOrder(purchaseOrder);
|
||||
|
||||
purchaseOrder.setStatusSelect(PurchaseOrderRepository.STATUS_REQUESTED);
|
||||
purchaseOrder.setReceiptState(PurchaseOrderRepository.STATE_NOT_RECEIVED);
|
||||
|
||||
poRepo.save(purchaseOrder);
|
||||
}
|
||||
|
||||
public PurchaseOrderLine createPurchaseOrderLine(
|
||||
PurchaseOrder purchaseOrder, PurchaseOrderLine purchaseOrderLine) throws AxelorException {
|
||||
|
||||
LOG.debug(
|
||||
"Création d'une ligne de commande fournisseur pour le produit : {}",
|
||||
new Object[] {purchaseOrderLine.getProductName()});
|
||||
|
||||
return purchaseOrderLineService.createPurchaseOrderLine(
|
||||
purchaseOrder,
|
||||
purchaseOrderLine.getProduct(),
|
||||
purchaseOrderLine.getProductName(),
|
||||
purchaseOrderLine.getDescription(),
|
||||
purchaseOrderLine.getQty(),
|
||||
purchaseOrderLine.getUnit());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* 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.suppliermanagement.web;
|
||||
|
||||
import com.axelor.apps.purchase.db.PurchaseOrder;
|
||||
import com.axelor.apps.purchase.db.repo.PurchaseOrderRepository;
|
||||
import com.axelor.apps.suppliermanagement.exceptions.IExceptionMessage;
|
||||
import com.axelor.apps.suppliermanagement.service.PurchaseOrderSupplierService;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.i18n.I18n;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
@Singleton
|
||||
public class PurchaseOrderController {
|
||||
|
||||
public void generateSuppliersPurchaseOrder(ActionRequest request, ActionResponse response) {
|
||||
|
||||
PurchaseOrder purchaseOrder = request.getContext().asType(PurchaseOrder.class);
|
||||
|
||||
try {
|
||||
Beans.get(PurchaseOrderSupplierService.class)
|
||||
.generateSuppliersPurchaseOrder(
|
||||
Beans.get(PurchaseOrderRepository.class).find(purchaseOrder.getId()));
|
||||
response.setFlash(I18n.get(IExceptionMessage.PURCHASE_ORDER_1));
|
||||
response.setReload(true);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
|
||||
public void generateSuppliersRequests(ActionRequest request, ActionResponse response) {
|
||||
|
||||
PurchaseOrder purchaseOrder = request.getContext().asType(PurchaseOrder.class);
|
||||
|
||||
try {
|
||||
Beans.get(PurchaseOrderSupplierService.class)
|
||||
.generateAllSuppliersRequests(
|
||||
Beans.get(PurchaseOrderRepository.class).find(purchaseOrder.getId()));
|
||||
response.setFlash(I18n.get(IExceptionMessage.PURCHASE_ORDER_2));
|
||||
response.setReload(true);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* 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.suppliermanagement.web;
|
||||
|
||||
import com.axelor.apps.purchase.db.PurchaseOrder;
|
||||
import com.axelor.apps.purchase.db.PurchaseOrderLine;
|
||||
import com.axelor.apps.purchase.db.repo.PurchaseOrderLineRepository;
|
||||
import com.axelor.apps.suppliermanagement.service.PurchaseOrderSupplierService;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
@Singleton
|
||||
public class PurchaseOrderLineController {
|
||||
|
||||
public void generateSuppliersRequests(ActionRequest request, ActionResponse response) {
|
||||
|
||||
PurchaseOrderLine purchaseOrderLine =
|
||||
Beans.get(PurchaseOrderLineRepository.class)
|
||||
.find(request.getContext().asType(PurchaseOrderLine.class).getId());
|
||||
|
||||
try {
|
||||
if (purchaseOrderLine.getPurchaseOrder() == null) {
|
||||
PurchaseOrder purchaseOrder = request.getContext().getParent().asType(PurchaseOrder.class);
|
||||
Beans.get(PurchaseOrderSupplierService.class)
|
||||
.generateSuppliersRequests(purchaseOrderLine, purchaseOrder);
|
||||
} else {
|
||||
Beans.get(PurchaseOrderSupplierService.class).generateSuppliersRequests(purchaseOrderLine);
|
||||
}
|
||||
response.setReload(true);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
/*
|
||||
* 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.suppliermanagement.web;
|
||||
|
||||
import com.axelor.apps.base.db.Company;
|
||||
import com.axelor.apps.base.db.repo.BlockingRepository;
|
||||
import com.axelor.apps.base.service.BlockingService;
|
||||
import com.axelor.apps.purchase.db.PurchaseOrder;
|
||||
import com.axelor.apps.purchase.db.PurchaseOrderLine;
|
||||
import com.axelor.apps.purchase.db.repo.PurchaseOrderLineRepository;
|
||||
import com.axelor.apps.purchase.service.app.AppPurchaseService;
|
||||
import com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine;
|
||||
import com.axelor.apps.suppliermanagement.db.repo.PurchaseOrderSupplierLineRepository;
|
||||
import com.axelor.apps.suppliermanagement.service.PurchaseOrderSupplierLineService;
|
||||
import com.axelor.exception.service.TraceBackService;
|
||||
import com.axelor.inject.Beans;
|
||||
import com.axelor.rpc.ActionRequest;
|
||||
import com.axelor.rpc.ActionResponse;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.inject.Singleton;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Singleton
|
||||
public class PurchaseOrderSupplierLineController {
|
||||
|
||||
public void accept(ActionRequest request, ActionResponse response) {
|
||||
|
||||
PurchaseOrderSupplierLine purchaseOrderSupplierLine =
|
||||
Beans.get(PurchaseOrderSupplierLineRepository.class)
|
||||
.find(request.getContext().asType(PurchaseOrderSupplierLine.class).getId());
|
||||
|
||||
if (purchaseOrderSupplierLine.getPurchaseOrderLine() == null
|
||||
&& request.getContext().getParent() != null) {
|
||||
purchaseOrderSupplierLine.setPurchaseOrderLine(
|
||||
Beans.get(PurchaseOrderLineRepository.class)
|
||||
.find(request.getContext().getParent().asType(PurchaseOrderLine.class).getId()));
|
||||
}
|
||||
|
||||
try {
|
||||
Beans.get(PurchaseOrderSupplierLineService.class).accept(purchaseOrderSupplierLine);
|
||||
response.setReload(true);
|
||||
} catch (Exception e) {
|
||||
TraceBackService.trace(response, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called on supplier partner select. Set the domain for the field supplierPartner
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
*/
|
||||
public void supplierPartnerDomain(ActionRequest request, ActionResponse response) {
|
||||
PurchaseOrderSupplierLine purchaseOrderSupplierLine =
|
||||
request.getContext().asType(PurchaseOrderSupplierLine.class);
|
||||
|
||||
PurchaseOrderLine purchaseOrderLine = purchaseOrderSupplierLine.getPurchaseOrderLine();
|
||||
if (purchaseOrderLine == null) {
|
||||
purchaseOrderLine = request.getContext().getParent().asType(PurchaseOrderLine.class);
|
||||
}
|
||||
|
||||
PurchaseOrder purchaseOrder = purchaseOrderLine.getPurchaseOrder();
|
||||
if (purchaseOrder == null) {
|
||||
purchaseOrder = request.getContext().getParent().getParent().asType(PurchaseOrder.class);
|
||||
}
|
||||
Company company = purchaseOrder.getCompany();
|
||||
|
||||
String domain = "";
|
||||
if (Beans.get(AppPurchaseService.class).getAppPurchase().getManageSupplierCatalog()
|
||||
&& purchaseOrderLine.getProduct() != null
|
||||
&& !purchaseOrderLine.getProduct().getSupplierCatalogList().isEmpty()) {
|
||||
domain +=
|
||||
"self.id != "
|
||||
+ company.getPartner().getId()
|
||||
+ " AND self.id IN "
|
||||
+ purchaseOrderLine
|
||||
.getProduct()
|
||||
.getSupplierCatalogList()
|
||||
.stream()
|
||||
.map(s -> s.getSupplierPartner().getId())
|
||||
.collect(Collectors.toList())
|
||||
.toString()
|
||||
.replace('[', '(')
|
||||
.replace(']', ')');
|
||||
|
||||
String blockedPartnerQuery =
|
||||
Beans.get(BlockingService.class)
|
||||
.listOfBlockedPartner(company, BlockingRepository.PURCHASE_BLOCKING);
|
||||
|
||||
if (!Strings.isNullOrEmpty(blockedPartnerQuery)) {
|
||||
domain += String.format(" AND self.id NOT in (%s)", blockedPartnerQuery);
|
||||
}
|
||||
} else {
|
||||
domain += "self.id = 0";
|
||||
}
|
||||
|
||||
domain += " AND " + company.getId() + " in (SELECT id FROM self.companySet)";
|
||||
|
||||
response.setAttr("supplierPartner", "domain", domain);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?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="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.suppliermanagement.all";"com.axelor.apps.suppliermanagement.db.*";"x";"x";"x";"x";"x";;;"Admin"
|
||||
|
@@ -0,0 +1,2 @@
|
||||
"name";"roles.name"
|
||||
"sc-root-purchase-order-supplier-lines-requests";"Admin"
|
||||
|
@@ -0,0 +1,15 @@
|
||||
<?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="AppPurchase" lang="java" extends="App">
|
||||
<boolean name="supplierRequestMgt" title="Manage supplier consultations"/>
|
||||
|
||||
<track>
|
||||
<field name="supplierRequestMgt" on="UPDATE"/>
|
||||
</track>
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?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="purchase" package="com.axelor.apps.purchase.db"/>
|
||||
|
||||
<entity name="PurchaseOrder" lang="java">
|
||||
|
||||
|
||||
<!-- Champ du module Supplier Management -->
|
||||
<many-to-one name="parentPurchaseOrder" ref="com.axelor.apps.purchase.db.PurchaseOrder" title="Initial purchase order"/>
|
||||
<boolean name="isPurchaseParent" title="Purchase order"/>
|
||||
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?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="purchase" package="com.axelor.apps.purchase.db"/>
|
||||
|
||||
<entity name="PurchaseOrderLine" lang="java">
|
||||
|
||||
<!-- Champ du module Supplier Management -->
|
||||
<one-to-many name="purchaseOrderSupplierLineList" ref="com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine" mappedBy="purchaseOrderLine" title="Suppliers requests"/>
|
||||
<many-to-one name="supplierPartner" ref="com.axelor.apps.base.db.Partner" title="Supplier"/>
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@@ -0,0 +1,38 @@
|
||||
<?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="suppliermanagement" package="com.axelor.apps.suppliermanagement.db"/>
|
||||
|
||||
<entity name="PurchaseOrderSupplierLine" lang="java">
|
||||
|
||||
<many-to-one name="purchaseOrderLine" ref="com.axelor.apps.purchase.db.PurchaseOrderLine" title="Purchase order" index="idx_suppmanage_po_supp_line_po_line"/>
|
||||
|
||||
<decimal name="availableQty" title="Available qty" default="0"/>
|
||||
|
||||
<decimal name="price" title="Unit price" initParam="true"/>
|
||||
|
||||
<string name="comments" title="Comments" large="true"/>
|
||||
|
||||
<date name="estimatedDelivDate" title="Estim. delivery date"/>
|
||||
|
||||
<integer name="stateSelect" title="State" selection="isuppliermanagement.purchase.order.supplier.line.state.select" initParam="true"/>
|
||||
|
||||
<many-to-one name="supplierPartner" ref="com.axelor.apps.base.db.Partner" title="Supplier" initParam="true" index="idx_suppmanage_po_supp_line_supp_partner"/>
|
||||
|
||||
<extra-code><![CDATA[
|
||||
|
||||
//STATE SELECT
|
||||
public static final int STATE_REQUESTED = 1;
|
||||
public static final int STATE_SUBMITTED = 2;
|
||||
public static final int STATE_ACCEPTED = 3;
|
||||
public static final int STATE_NOT_ACCEPTED = 4;
|
||||
public static final int STATE_CANCELED = 5;
|
||||
]]>
|
||||
</extra-code>
|
||||
|
||||
|
||||
</entity>
|
||||
|
||||
</domain-models>
|
||||
@@ -0,0 +1,50 @@
|
||||
"key","message","comment","context"
|
||||
"Accept",,,
|
||||
"Accepted",,,
|
||||
"Actions",,,
|
||||
"Available qty",,,
|
||||
"Cancel",,,
|
||||
"Canceled",,,
|
||||
"Comments",,,
|
||||
"Estim. delivery date",,,
|
||||
"Generate all suppliers requests",,,
|
||||
"Generate suppliers purchase orders",,,
|
||||
"Initial purchase order",,,
|
||||
"Manage supplier consultations",,,
|
||||
"My R.F.Q.",,,
|
||||
"My R.F.Q. to complete",,,
|
||||
"My deliveries",,,
|
||||
"My purchase orders",,,
|
||||
"My space",,,
|
||||
"Not accept",,,
|
||||
"Not accepted",,,
|
||||
"Ordered quantity",,,
|
||||
"Purchase order",,,
|
||||
"Purchase order Details",,,
|
||||
"Receipt date",,,
|
||||
"Request",,,
|
||||
"Requested",,,
|
||||
"Show suppliers purchase orders",,,
|
||||
"State",,,
|
||||
"Status",,,
|
||||
"Stock move",,,
|
||||
"Stock move informations",,,
|
||||
"Stock move line",,,
|
||||
"Stock move lines",,,
|
||||
"Stock move reference",,,
|
||||
"Stock moves",,,
|
||||
"Submit",,,
|
||||
"Submitted",,,
|
||||
"Supplier",,,
|
||||
"Supplier RFQ/PO",,,
|
||||
"Supplier consultations",,,
|
||||
"Supplier request",,,
|
||||
"Supplier's consulting's request created",,,
|
||||
"Suppliers orders' generation over",,,
|
||||
"Suppliers purchase",,,
|
||||
"Suppliers requests",,,
|
||||
"Tools",,,
|
||||
"Unit price",,,
|
||||
"WARNING : To Date must be after or equals to From Date",,,
|
||||
"Write to the supplier",,,
|
||||
"suppliers requests",,,
|
||||
|
@@ -0,0 +1,50 @@
|
||||
"key","message","comment","context"
|
||||
"Accept","Akzeptieren",,
|
||||
"Accepted","Akzeptiert",,
|
||||
"Actions","Aktionen",,
|
||||
"Available qty","Verfügbare Menge",,
|
||||
"Cancel","Abbrechen",,
|
||||
"Canceled","Abgesagt",,
|
||||
"Comments","Kommentare",,
|
||||
"Estim. delivery date","Voraussichtlicher Liefertermin",,
|
||||
"Generate all suppliers requests","Generierung aller Lieferantenanfragen",,
|
||||
"Generate suppliers purchase orders","Lieferantenbestellungen generieren",,
|
||||
"Initial purchase order","Erstbestellung",,
|
||||
"Manage supplier consultations",,,
|
||||
"My R.F.Q.","My R.F.Q.",,
|
||||
"My R.F.Q. to complete","Mein R.F.Q. zum Ausfüllen",,
|
||||
"My deliveries","Meine Lieferungen",,
|
||||
"My purchase orders","Meine Bestellungen",,
|
||||
"My space","Mein Bereich",,
|
||||
"Not accept","Nicht akzeptieren",,
|
||||
"Not accepted","Nicht akzeptiert",,
|
||||
"Ordered quantity","Bestellmenge",,
|
||||
"Purchase order","Bestellung",,
|
||||
"Purchase order Details","Bestelldaten",,
|
||||
"Receipt date","Eingangsdatum",,
|
||||
"Request","Anfrage",,
|
||||
"Requested","Angefordert",,
|
||||
"Show suppliers purchase orders","Lieferantenbestellungen anzeigen",,
|
||||
"State","Zustand",,
|
||||
"Status","Status",,
|
||||
"Stock move","Lagerbewegung",,
|
||||
"Stock move informations","Informationen zur Lagerbewegung",,
|
||||
"Stock move line","Lagerbewegungslinie",,
|
||||
"Stock move lines","Lagerbewegungslinien",,
|
||||
"Stock move reference","Referenz zur Lagerbewegung",,
|
||||
"Stock moves","Lagerbewegungen",,
|
||||
"Submit","Absenden",,
|
||||
"Submitted","Eingereicht",,
|
||||
"Supplier","Lieferant",,
|
||||
"Supplier RFQ/PO","Lieferantenanfrage/PO",,
|
||||
"Supplier consultations",,,
|
||||
"Supplier request","Lieferantenanfrage",,
|
||||
"Supplier's consulting's request created","Anfrage der Lieferantenberatung erstellt",,
|
||||
"Suppliers orders' generation over","Generierung von Lieferantenaufträgen über die gesamte Laufzeit",,
|
||||
"Suppliers purchase","Lieferanten kaufen",,
|
||||
"Suppliers requests","Anfragen von Lieferanten",,
|
||||
"Tools","Werkzeuge",,
|
||||
"Unit price","Stückpreis",,
|
||||
"WARNING : To Date must be after or equals to From Date","WARNUNG: Bis-Datum muss nach oder gleich dem Von-Datum sein.",,
|
||||
"Write to the supplier","Schreiben Sie an den Lieferanten",,
|
||||
"suppliers requests","Lieferantenanfragen",,
|
||||
|
@@ -0,0 +1,50 @@
|
||||
"key","message","comment","context"
|
||||
"Accept",,,
|
||||
"Accepted",,,
|
||||
"Actions",,,
|
||||
"Available qty",,,
|
||||
"Cancel",,,
|
||||
"Canceled",,,
|
||||
"Comments",,,
|
||||
"Estim. delivery date",,,
|
||||
"Generate all suppliers requests",,,
|
||||
"Generate suppliers purchase orders",,,
|
||||
"Initial purchase order",,,
|
||||
"Manage supplier consultations",,,
|
||||
"My R.F.Q.",,,
|
||||
"My R.F.Q. to complete",,,
|
||||
"My deliveries",,,
|
||||
"My purchase orders",,,
|
||||
"My space",,,
|
||||
"Not accept",,,
|
||||
"Not accepted",,,
|
||||
"Ordered quantity",,,
|
||||
"Purchase order",,,
|
||||
"Purchase order Details",,,
|
||||
"Receipt date",,,
|
||||
"Request",,,
|
||||
"Requested",,,
|
||||
"Show suppliers purchase orders",,,
|
||||
"State",,,
|
||||
"Status",,,
|
||||
"Stock move",,,
|
||||
"Stock move informations",,,
|
||||
"Stock move line",,,
|
||||
"Stock move lines",,,
|
||||
"Stock move reference",,,
|
||||
"Stock moves",,,
|
||||
"Submit",,,
|
||||
"Submitted",,,
|
||||
"Supplier",,,
|
||||
"Supplier RFQ/PO",,,
|
||||
"Supplier consultations",,,
|
||||
"Supplier request",,,
|
||||
"Supplier's consulting's request created",,,
|
||||
"Suppliers orders' generation over",,,
|
||||
"Suppliers purchase",,,
|
||||
"Suppliers requests",,,
|
||||
"Tools",,,
|
||||
"Unit price",,,
|
||||
"WARNING : To Date must be after or equals to From Date",,,
|
||||
"Write to the supplier",,,
|
||||
"suppliers requests",,,
|
||||
|
@@ -0,0 +1,50 @@
|
||||
"key","message","comment","context"
|
||||
"Accept","Aceptar",,
|
||||
"Accepted","Aceptado",,
|
||||
"Actions","Acciones",,
|
||||
"Available qty","Cantidad disponible",,
|
||||
"Cancel","Cancelar",,
|
||||
"Canceled","Cancelado",,
|
||||
"Comments","Comentarios",,
|
||||
"Estim. delivery date","Fecha estimada de entrega",,
|
||||
"Generate all suppliers requests","Generar todas las solicitudes de los proveedores",,
|
||||
"Generate suppliers purchase orders","Generar órdenes de compra de proveedores",,
|
||||
"Initial purchase order","Pedido inicial",,
|
||||
"Manage supplier consultations",,,
|
||||
"My R.F.Q.","Mi R.F.Q.",,
|
||||
"My R.F.Q. to complete","Mi R.F.Q. para completar",,
|
||||
"My deliveries","Mis entregas",,
|
||||
"My purchase orders","Mis pedidos",,
|
||||
"My space","Mi espacio",,
|
||||
"Not accept","No aceptar",,
|
||||
"Not accepted","No se acepta",,
|
||||
"Ordered quantity","Cantidad pedida",,
|
||||
"Purchase order","Pedido",,
|
||||
"Purchase order Details","Detalles de la orden de compra",,
|
||||
"Receipt date","Fecha de entrada",,
|
||||
"Request","Solicitar",,
|
||||
"Requested","Solicitado",,
|
||||
"Show suppliers purchase orders","Mostrar pedidos de proveedores",,
|
||||
"State","Estado",,
|
||||
"Status","Estado",,
|
||||
"Stock move","Movimiento de stock",,
|
||||
"Stock move informations","Información de movimientos de acciones",,
|
||||
"Stock move line","Línea de movimiento",,
|
||||
"Stock move lines","Líneas de movimiento",,
|
||||
"Stock move reference","Referencia de movimiento de stock",,
|
||||
"Stock moves","Movimientos de stock",,
|
||||
"Submit","Enviar",,
|
||||
"Submitted","Presentado",,
|
||||
"Supplier","Proveedor",,
|
||||
"Supplier RFQ/PO","Petición de oferta/PO de proveedor",,
|
||||
"Supplier consultations",,,
|
||||
"Supplier request","Solicitud de proveedor",,
|
||||
"Supplier's consulting's request created","Creación de la solicitud de consultoría del proveedor",,
|
||||
"Suppliers orders' generation over","Generación de pedidos de proveedores a lo largo de",,
|
||||
"Suppliers purchase","Compra de proveedores",,
|
||||
"Suppliers requests","Solicitudes de proveedores",,
|
||||
"Tools","Herramientas",,
|
||||
"Unit price","Precio unitario",,
|
||||
"WARNING : To Date must be after or equals to From Date","ADVERTENCIA : Hasta la fecha debe ser posterior o igual a Desde la fecha",,
|
||||
"Write to the supplier","Escribir al proveedor",,
|
||||
"suppliers requests","solicitudes de proveedores",,
|
||||
|
@@ -0,0 +1,50 @@
|
||||
"key","message","comment","context"
|
||||
"Accept","Accepter",,
|
||||
"Accepted","Accepté",,
|
||||
"Actions","Actions",,
|
||||
"Available qty","Qté disponible",,
|
||||
"Cancel","Annuler",,
|
||||
"Canceled","Annulé",,
|
||||
"Comments","Commentaires",,
|
||||
"Estim. delivery date","Date de livr. Estimée",,
|
||||
"Generate all suppliers requests","Générer toutes les demandes aux fournisseurs",,
|
||||
"Generate suppliers purchase orders","Générer commandes fournisseurs",,
|
||||
"Initial purchase order","Cmde initiale",,
|
||||
"Manage supplier consultations","Gestion des consultations fournisseurs",,
|
||||
"My R.F.Q.","Mes demandes de cotations",,
|
||||
"My R.F.Q. to complete","Mes demandes de cotations à compléter",,
|
||||
"My deliveries","Mes livraisons",,
|
||||
"My purchase orders","Mes commandes",,
|
||||
"My space","Mon espace",,
|
||||
"Not accept","Ne pas retenir",,
|
||||
"Not accepted","Non retenu",,
|
||||
"Ordered quantity","Quantité commandée",,
|
||||
"Purchase order","Commande d'Achat",,
|
||||
"Purchase order Details","Informations sur la commande d'achat",,
|
||||
"Receipt date","Date de reception",,
|
||||
"Request","Demander",,
|
||||
"Requested","Demandé",,
|
||||
"Show suppliers purchase orders","Les commandes fournisseurs associées",,
|
||||
"State","Statut",,
|
||||
"Status",,,
|
||||
"Stock move","Mouvement de stock",,
|
||||
"Stock move informations","Informations sur Stocks Internes",,
|
||||
"Stock move line","Ligne mvt. de stock",,
|
||||
"Stock move lines","Lignes mvt. de stock",,
|
||||
"Stock move reference","Références mouvement de stock",,
|
||||
"Stock moves","Mouvements de stock",,
|
||||
"Submit","Envoyer",,
|
||||
"Submitted","Soumis(e)",,
|
||||
"Supplier","Fournisseur",,
|
||||
"Supplier RFQ/PO","Dv/Cmde Fourn.",,
|
||||
"Supplier consultations","Consultations fournisseur",,
|
||||
"Supplier request","Demande d'achat",,
|
||||
"Supplier's consulting's request created","Demande de consultations fournisseurs créées",,
|
||||
"Suppliers orders' generation over","Génération des devis fournisseurs terminée",,
|
||||
"Suppliers purchase","Achats fournisseurs",,
|
||||
"Suppliers requests","Demandes d'achat",,
|
||||
"Tools",,,
|
||||
"Unit price","Prix unitaire",,
|
||||
"WARNING : To Date must be after or equals to From Date","Attention : Date de fin doit être égale ou supérieure à Date de début",,
|
||||
"Write to the supplier","Ecrire au fournisseur",,
|
||||
"suppliers requests","Demandes de devis fournisseurs",,
|
||||
|
@@ -0,0 +1,50 @@
|
||||
"key","message","comment","context"
|
||||
"Accept","Accettare",,
|
||||
"Accepted","Accettati",,
|
||||
"Actions","Azioni",,
|
||||
"Available qty","Qtà disponibile",,
|
||||
"Cancel","Annulla",,
|
||||
"Canceled","Annullato",,
|
||||
"Comments","Commenti",,
|
||||
"Estim. delivery date","Data di consegna prevista",,
|
||||
"Generate all suppliers requests","Generare tutte le richieste dei fornitori",,
|
||||
"Generate suppliers purchase orders","Generare gli ordini di acquisto dei fornitori",,
|
||||
"Initial purchase order","Ordine di acquisto iniziale",,
|
||||
"Manage supplier consultations",,,
|
||||
"My R.F.Q.","Il mio Q.Q.R.F.F.",,
|
||||
"My R.F.Q. to complete","Il mio Q.Q.R.F.F. da completare",,
|
||||
"My deliveries","Le mie consegne",,
|
||||
"My purchase orders","I miei ordini di acquisto",,
|
||||
"My space","Il mio spazio",,
|
||||
"Not accept","Non accetto",,
|
||||
"Not accepted","Non accettata",,
|
||||
"Ordered quantity","Quantità ordinata",,
|
||||
"Purchase order","Ordine d'acquisto",,
|
||||
"Purchase order Details","Dettagli dell'ordine di acquisto",,
|
||||
"Receipt date","Data di ricezione",,
|
||||
"Request","Richiesta",,
|
||||
"Requested","Richiesto",,
|
||||
"Show suppliers purchase orders","Mostra gli ordini di acquisto dei fornitori",,
|
||||
"State","Stato",,
|
||||
"Status","Stato",,
|
||||
"Stock move","Spostamento delle scorte",,
|
||||
"Stock move informations","Informazioni sulla movimentazione delle azioni",,
|
||||
"Stock move line","Linea stock move line",,
|
||||
"Stock move lines","Linee di spostamento delle scorte",,
|
||||
"Stock move reference","Riferimento per lo spostamento delle scorte",,
|
||||
"Stock moves","Movimenti di magazzino",,
|
||||
"Submit","Invia",,
|
||||
"Submitted","Presentato",,
|
||||
"Supplier","Fornitore",,
|
||||
"Supplier RFQ/PO","Fornitore RFQ/PO",,
|
||||
"Supplier consultations",,,
|
||||
"Supplier request","Richiesta del fornitore",,
|
||||
"Supplier's consulting's request created","Creazione della richiesta di consulenza del fornitore",,
|
||||
"Suppliers orders' generation over","Generazione degli ordini dei fornitori nel corso dell'anno",,
|
||||
"Suppliers purchase","Acquisto fornitori",,
|
||||
"Suppliers requests","Richieste dei fornitori",,
|
||||
"Tools","Strumenti",,
|
||||
"Unit price","Prezzo unitario",,
|
||||
"WARNING : To Date must be after or equals to From Date","ATTENZIONE: la data deve essere successiva o uguale a quella della data.",,
|
||||
"Write to the supplier","Scrivere al fornitore",,
|
||||
"suppliers requests","richieste dei fornitori",,
|
||||
|
@@ -0,0 +1,50 @@
|
||||
"key","message","comment","context"
|
||||
"Accept","Keur goed",,
|
||||
"Accepted","Aanvaard",,
|
||||
"Actions","Acties",,
|
||||
"Available qty","Beschikbaar qty",,
|
||||
"Cancel","Annuleren",,
|
||||
"Canceled","Geannuleerd",,
|
||||
"Comments","Commentaar",,
|
||||
"Estim. delivery date","Vermoedelijke leveringsdatum",,
|
||||
"Generate all suppliers requests","Genereer alle verzoeken van leveranciers",,
|
||||
"Generate suppliers purchase orders","Leveranciers inkooporders genereren",,
|
||||
"Initial purchase order","Eerste bestelling",,
|
||||
"Manage supplier consultations",,,
|
||||
"My R.F.Q.","Mijn R.F.Q.",,
|
||||
"My R.F.Q. to complete","Mijn R.F.Q. in te vullen",,
|
||||
"My deliveries","Mijn leveringen",,
|
||||
"My purchase orders","Mijn bestellingen",,
|
||||
"My space","Mijn ruimte",,
|
||||
"Not accept","Niet accepteren",,
|
||||
"Not accepted","Niet geaccepteerd",,
|
||||
"Ordered quantity","Bestelde hoeveelheid",,
|
||||
"Purchase order","Aankooporder",,
|
||||
"Purchase order Details","Aankooporder Details",,
|
||||
"Receipt date","Ontvangstdatum",,
|
||||
"Request","Aanvraag",,
|
||||
"Requested","Gevraagd",,
|
||||
"Show suppliers purchase orders","Toon leveranciers inkooporders",,
|
||||
"State","Staat",,
|
||||
"Status","Status",,
|
||||
"Stock move","Voorraadverhuizing",,
|
||||
"Stock move informations","Informatie over voorraadverplaatsingen",,
|
||||
"Stock move line","Voorraadverplaatsingslijn",,
|
||||
"Stock move lines","Voorraadverplaatsingslijnen",,
|
||||
"Stock move reference","Voorraadverplaatsing referentie",,
|
||||
"Stock moves","Voorraad verhuizingen",,
|
||||
"Submit","Aanmelden",,
|
||||
"Submitted","Ingediend",,
|
||||
"Supplier","Leverancier",,
|
||||
"Supplier RFQ/PO","Leverancier RFQ/PO",,
|
||||
"Supplier consultations",,,
|
||||
"Supplier request","Aanvraag leverancier",,
|
||||
"Supplier's consulting's request created","Het verzoek van de leverancier om advies opgesteld",,
|
||||
"Suppliers orders' generation over","Leveranciers orders genereren meer dan",,
|
||||
"Suppliers purchase","Leveranciers kopen",,
|
||||
"Suppliers requests","Verzoeken van leveranciers",,
|
||||
"Tools","Gereedschap",,
|
||||
"Unit price","Eenheidsprijs",,
|
||||
"WARNING : To Date must be after or equals to From Date","WAARSCHUWING: Tot datum moet na of gelijk zijn aan Vanaf datum",,
|
||||
"Write to the supplier","Schrijf naar de leverancier",,
|
||||
"suppliers requests","leveranciersaanvragen",,
|
||||
|
@@ -0,0 +1,50 @@
|
||||
"key","message","comment","context"
|
||||
"Accept","Akceptacja",,
|
||||
"Accepted","Przyjęty",,
|
||||
"Actions","Działania",,
|
||||
"Available qty","Dostępna ilość",,
|
||||
"Cancel","Anulowanie",,
|
||||
"Canceled","Anulowany",,
|
||||
"Comments","Komentarze",,
|
||||
"Estim. delivery date","Szacowana data dostawy",,
|
||||
"Generate all suppliers requests","Generowanie wszystkich zapytań od dostawców",,
|
||||
"Generate suppliers purchase orders","Generowanie zamówień zakupu dla dostawców",,
|
||||
"Initial purchase order","Pierwsze zamówienie zakupu",,
|
||||
"Manage supplier consultations",,,
|
||||
"My R.F.Q.","Moje R.F.Q.",,
|
||||
"My R.F.Q. to complete","Moje R.F.Q. do ukończenia",,
|
||||
"My deliveries","Moje dostawy",,
|
||||
"My purchase orders","Moje zamówienia zakupu",,
|
||||
"My space","Moja przestrzeń",,
|
||||
"Not accept","Nie akceptuj.",,
|
||||
"Not accepted","Nie przyjęto.",,
|
||||
"Ordered quantity","Zamówiona ilość",,
|
||||
"Purchase order","Zamówienie zakupu",,
|
||||
"Purchase order Details","Zamówienie zakupu Szczegóły",,
|
||||
"Receipt date","Data otrzymania",,
|
||||
"Request","Żądanie",,
|
||||
"Requested","Wnioskowany",,
|
||||
"Show suppliers purchase orders","Pokaż dostawcom zamówienia zakupu",,
|
||||
"State","państwo",,
|
||||
"Status","Status",,
|
||||
"Stock move","Przenoszenie zapasów",,
|
||||
"Stock move informations","Informacje o przesunięciach magazynowych",,
|
||||
"Stock move line","Linia przesuwu zapasów",,
|
||||
"Stock move lines","Linie przesuwu zapasów",,
|
||||
"Stock move reference","Odniesienie do przeniesienia zapasów",,
|
||||
"Stock moves","Przeniesienia magazynowe",,
|
||||
"Submit","Zgłoś się",,
|
||||
"Submitted","Przedłożone",,
|
||||
"Supplier","Dostawca",,
|
||||
"Supplier RFQ/PO","Dostawca RFQ/PO",,
|
||||
"Supplier consultations",,,
|
||||
"Supplier request","Żądanie dostawcy",,
|
||||
"Supplier's consulting's request created","Stworzony wniosek dostawcy o konsultację",,
|
||||
"Suppliers orders' generation over","Generowanie zamówień dostawców ponad",,
|
||||
"Suppliers purchase","Zakupy przez dostawców",,
|
||||
"Suppliers requests","Wnioski dostawców",,
|
||||
"Tools","Narzędzia",,
|
||||
"Unit price","Cena jednostkowa",,
|
||||
"WARNING : To Date must be after or equals to From Date","OSTRZEŻENIE: Data musi być późniejsza lub równa dacie",,
|
||||
"Write to the supplier","Napisz do dostawcy",,
|
||||
"suppliers requests","wnioski dostawców",,
|
||||
|
@@ -0,0 +1,50 @@
|
||||
"key","message","comment","context"
|
||||
"Accept","Aceitar",,
|
||||
"Accepted","Aceite",,
|
||||
"Actions","Ações",,
|
||||
"Available qty","Quantidade disponível",,
|
||||
"Cancel","Cancelar",,
|
||||
"Canceled","Cancelado",,
|
||||
"Comments","Comentários",,
|
||||
"Estim. delivery date","Data estimada de entrega",,
|
||||
"Generate all suppliers requests","Gerar todas as solicitações de fornecedores",,
|
||||
"Generate suppliers purchase orders","Gerar pedidos de compra de fornecedores",,
|
||||
"Initial purchase order","Pedido inicial",,
|
||||
"Manage supplier consultations",,,
|
||||
"My R.F.Q.","O meu R.F.Q.",,
|
||||
"My R.F.Q. to complete","O meu R.F.Q. para completar",,
|
||||
"My deliveries","Minhas entregas",,
|
||||
"My purchase orders","Meus pedidos de compra",,
|
||||
"My space","Meu espaço",,
|
||||
"Not accept","Não aceitar",,
|
||||
"Not accepted","Não aceite",,
|
||||
"Ordered quantity","Quantidade pedida",,
|
||||
"Purchase order","Pedido de compra",,
|
||||
"Purchase order Details","Detalhes do pedido de compra",,
|
||||
"Receipt date","Data de recebimento",,
|
||||
"Request","Solicitar",,
|
||||
"Requested","Solicitado",,
|
||||
"Show suppliers purchase orders","Mostrar pedidos de compra de fornecedores",,
|
||||
"State","Estado",,
|
||||
"Status","Estado",,
|
||||
"Stock move","Movimento de estoque",,
|
||||
"Stock move informations","Informações sobre movimento de estoque",,
|
||||
"Stock move line","Linha de movimentação de estoque",,
|
||||
"Stock move lines","Linhas de movimentação de estoque",,
|
||||
"Stock move reference","Referência de movimento de estoque",,
|
||||
"Stock moves","Movimentos de estoque",,
|
||||
"Submit","Enviar",,
|
||||
"Submitted","Submetido",,
|
||||
"Supplier","Fornecedor",,
|
||||
"Supplier RFQ/PO","Solicitação de cotação/ordem de compra do fornecedor",,
|
||||
"Supplier consultations",,,
|
||||
"Supplier request","Solicitação de fornecedor",,
|
||||
"Supplier's consulting's request created","Solicitação de consultoria do fornecedor criada",,
|
||||
"Suppliers orders' generation over","Geração de encomendas de fornecedores ao longo de",,
|
||||
"Suppliers purchase","Compra de fornecedores",,
|
||||
"Suppliers requests","Pedidos de fornecedores",,
|
||||
"Tools","Ferramentas",,
|
||||
"Unit price","Preço unitário",,
|
||||
"WARNING : To Date must be after or equals to From Date","AVISO: A data até deve ser posterior ou igual à data de início",,
|
||||
"Write to the supplier","Escrever para o fornecedor",,
|
||||
"suppliers requests","solicitações de fornecedores",,
|
||||
|
@@ -0,0 +1,50 @@
|
||||
"key","message","comment","context"
|
||||
"Accept","Принять",,
|
||||
"Accepted","Принято",,
|
||||
"Actions","Действия",,
|
||||
"Available qty","Доступно qty",,
|
||||
"Cancel","Отмена",,
|
||||
"Canceled","Отмена",,
|
||||
"Comments","Комментарии",,
|
||||
"Estim. delivery date","Смета. дата поставки",,
|
||||
"Generate all suppliers requests","Генерировать все запросы поставщиков",,
|
||||
"Generate suppliers purchase orders","Генерировать заказы на поставку от поставщиков",,
|
||||
"Initial purchase order","Первоначальный заказ на покупку",,
|
||||
"Manage supplier consultations",,,
|
||||
"My R.F.Q.","Мой R.F.Q.",,
|
||||
"My R.F.Q. to complete","Мой R.F.Q., чтобы закончить",,
|
||||
"My deliveries","Мои поставки",,
|
||||
"My purchase orders","Мои заказы",,
|
||||
"My space","Мое место",,
|
||||
"Not accept","Не принимаю",,
|
||||
"Not accepted","Не принято",,
|
||||
"Ordered quantity","Заказанное количество",,
|
||||
"Purchase order","Заказ на покупку",,
|
||||
"Purchase order Details","Заказ на поставку Детали",,
|
||||
"Receipt date","Дата получения",,
|
||||
"Request","Запрос",,
|
||||
"Requested","Запрошенный",,
|
||||
"Show suppliers purchase orders","Показать поставщикам заказы на поставку",,
|
||||
"State","Государство",,
|
||||
"Status","Статус",,
|
||||
"Stock move","Перемещение запасов",,
|
||||
"Stock move informations","Информация о движении запасов",,
|
||||
"Stock move line","Линия перемещения запасов",,
|
||||
"Stock move lines","Линии перемещения запасов",,
|
||||
"Stock move reference","Справочник по перемещению запасов",,
|
||||
"Stock moves","Перемещение запасов",,
|
||||
"Submit","Представить",,
|
||||
"Submitted","Представленный",,
|
||||
"Supplier","Поставщик",,
|
||||
"Supplier RFQ/PO","Поставщик RFQ/PO",,
|
||||
"Supplier consultations",,,
|
||||
"Supplier request","Запрос поставщика",,
|
||||
"Supplier's consulting's request created","Создан запрос поставщика на консультацию",,
|
||||
"Suppliers orders' generation over","Генерация заказов поставщиков свыше",,
|
||||
"Suppliers purchase","Покупка поставщиков",,
|
||||
"Suppliers requests","Запросы поставщиков",,
|
||||
"Tools","Инструменты",,
|
||||
"Unit price","Цена единицы",,
|
||||
"WARNING : To Date must be after or equals to From Date","ПРЕДУПРЕЖДЕНИЕ: Свидание должно быть после даты или равно дате от нее.",,
|
||||
"Write to the supplier","Напишите поставщику.",,
|
||||
"suppliers requests","запросы поставщиков",,
|
||||
|
@@ -0,0 +1,18 @@
|
||||
<?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="supplychain_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="supplychain_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,2 @@
|
||||
"name";"roles.name"
|
||||
"sc-root-purchase-order-supplier-lines-requests";"Supplychain Manager|Supplychain User|Supplychain Read"
|
||||
|
@@ -0,0 +1,4 @@
|
||||
"name";"object";"can_read";"can_write";"can_create";"can_remove";"can_export";"condition";"conditionParams";"roleName"
|
||||
"perm.suppliermanagement.PurchaseOrderSupplierLine.r";"com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine";"x";;;;;;;"Supplychain Read"
|
||||
"perm.suppliermanagement.PurchaseOrderSupplierLine.rwc";"com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine";"x";"x";"x";;;;;"Supplychain User"
|
||||
"perm.suppliermanagement.PurchaseOrderSupplierLine.rwcde";"com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine";"x";"x";"x";"x";"x";;;"Supplychain Manager"
|
||||
|
@@ -0,0 +1,17 @@
|
||||
<?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="sc-root-purchase-order-supplier-lines-requests" title="Supplier consultations" order="30" if="__config__.app.getApp('purchase') && __config__.app.getApp('purchase').getSupplierRequestMgt()"
|
||||
action="sc.root.purchase.orders.supplier.lines.requests" parent="sc-root-purchase"/>
|
||||
|
||||
<action-view name="sc.root.purchase.orders.supplier.lines.requests" title="Supplier consultations"
|
||||
model="com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine" >
|
||||
<view type="grid" name="purchase-order-supplier-line-grid" />
|
||||
<view type="form" name="purchase-order-supplier-line-form" />
|
||||
</action-view>
|
||||
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,34 @@
|
||||
<?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">
|
||||
|
||||
<form name="purchase-order-supplier-form" title="Supplier RFQ/PO" model="com.axelor.apps.purchase.db.PurchaseOrder" >
|
||||
<panel name="mainPanel" colSpan="12">
|
||||
<field name="isPurchaseParent"/>
|
||||
<field name="parentPurchaseOrder" hideIf="isPurchaseParent" form-view="purchase-order-form" grid-view="purchase-order-grid"/>
|
||||
<button name="generateSuppliersPurchaseOrderBtn" title="Generate suppliers purchase orders" onClick="save,action-purchase-order-method-generate-suppliers-purchase-order,save"/>
|
||||
<button name="showSuppliersPurchaseOrderBtn" title="Show suppliers purchase orders" onClick="action-purchase-order-view-show-suppliers-purchase-order"/>
|
||||
<button name="generatePurchaseOrderSupplierLineBtn" title="Generate all suppliers requests" onClick="save,action-purchase-order-method-generate-purchase-order-supplier-line,save"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<action-method name="action-purchase-order-method-generate-suppliers-purchase-order">
|
||||
<call class="com.axelor.apps.suppliermanagement.web.PurchaseOrderController" method="generateSuppliersPurchaseOrder"/>
|
||||
</action-method>
|
||||
|
||||
<action-method name="action-purchase-order-method-generate-purchase-order-supplier-line">
|
||||
<call class="com.axelor.apps.suppliermanagement.web.PurchaseOrderController" method="generateSuppliersRequests"/>
|
||||
</action-method>
|
||||
|
||||
<action-view name="action-purchase-order-view-show-suppliers-purchase-order" model="com.axelor.apps.purchase.db.PurchaseOrder" title="Suppliers purchase">
|
||||
<view type="grid" name="purchase-order-grid"/>
|
||||
<view type="form" name="purchase-order-form"/>
|
||||
<domain>self.parentPurchaseOrder.id = :_parentPurchaseOrderId</domain>
|
||||
<context name="_parentPurchaseOrderId" expr="eval: __this__.id"/>
|
||||
</action-view>
|
||||
|
||||
|
||||
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,115 @@
|
||||
<?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="purchase-order-supplier-line-grid" title="suppliers requests" canNew="false" model="com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine">
|
||||
<hilite if="stateSelect == 1" color="info" />
|
||||
<hilite if="stateSelect == 2" color="primary" />
|
||||
<hilite if="stateSelect == 3" color="success" />
|
||||
<hilite if="stateSelect == 4" color="warning" />
|
||||
<hilite if="stateSelect == 5" color="danger" />
|
||||
<field name="supplierPartner" form-view="partner-form" grid-view="partner-grid"/>
|
||||
<field name="purchaseOrderLine.product" form-view="product-form" grid-view="product-grid" />
|
||||
<field name="availableQty" aggregate="sum"/>
|
||||
<field name="purchaseOrderLine.unit" form-view="unit-form" grid-view="unit-grid"/>
|
||||
<field name="price"/>
|
||||
<field name="estimatedDelivDate"/>
|
||||
<field name="stateSelect"/>
|
||||
</grid>
|
||||
|
||||
<form name="purchase-order-supplier-line-form" title="Supplier request" model="com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine"
|
||||
onNew="action-purchase-order-supplier-line-record-request,action-purchase-order-supplier-line-attrs-new" canNew="false">
|
||||
<menubar>
|
||||
<menu name="purchaseOrderSupplierLineToolsMenu" title="Tools">
|
||||
<item name="writeToSupplierItem" title="Write to the supplier" action="save,action-send-by-email-with-template"/>
|
||||
</menu>
|
||||
</menubar>
|
||||
|
||||
<panel name="statusPanel" title="Status">
|
||||
<field name="stateSelect" showTitle="false" readonly="true" colSpan="12" widget="NavSelect"/>
|
||||
</panel>
|
||||
<panel name="mainPanel" >
|
||||
<field name="supplierPartner" onSelect="action-purchase-order-supplier-line-method-supplier-partner-domain" form-view="partner-form" grid-view="partner-grid"/>
|
||||
<field name="availableQty"/>
|
||||
<field name="purchaseOrderLine.unit" form-view="unit-form" grid-view="unit-grid"/>
|
||||
<field name="price"/>
|
||||
<field name="estimatedDelivDate"/>
|
||||
</panel>
|
||||
<panel name="purchaseOrderDetailsPanel" title="Purchase order Details" readOnly="true">
|
||||
<field name="purchaseOrderLine"/>
|
||||
<field name="purchaseOrderLine.product"/>
|
||||
<field name="purchaseOrderLine.qty" title="Ordered quantity"/>
|
||||
<field name="purchaseOrderLine.price"/>
|
||||
<field name="purchaseOrderLine.desiredDelivDate"/>
|
||||
</panel>
|
||||
<panel name="commentsPanel">
|
||||
<field name="comments" colSpan="12"/>
|
||||
</panel>
|
||||
<panel sidebar="true" name="actionsPanel" title="Actions">
|
||||
<button name="acceptBtn" title="Accept" showIf="stateSelect == 1 || stateSelect == 2" onClick="save,action-purchase-order-supplier-line-method-accept,save"/>
|
||||
<button name="notAcceptBtn" title="Not accept" showIf="stateSelect == 1 || stateSelect == 2" onClick="save,action-purchase-order-supplier-line-record-not-accept,save"/>
|
||||
<button name="cancelBtn" title="Cancel" hideIf="stateSelect == 5" onClick="save,action-purchase-order-supplier-line-record-cancel,save"/>
|
||||
<button name="requestBtn" title="Request" showIf="stateSelect == 5" onClick="save,action-purchase-order-supplier-line-record-request,save"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<grid name="purchase-order-supplier-line-supplier-grid" title="Suppliers requests" model="com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine">
|
||||
<field name="purchaseOrderLine.product" form-view="product-form" grid-view="product-grid"/>
|
||||
<field name="purchaseOrderLine.qty"/>
|
||||
<field name="purchaseOrderLine.desiredDelivDate"/>
|
||||
<field name="availableQty" aggregate="sum"/>
|
||||
<field name="purchaseOrderLine.unit" form-view="unit-form" grid-view="unit-grid"/>
|
||||
<field name="price"/>
|
||||
<field name="estimatedDelivDate"/>
|
||||
<field name="comments"/>
|
||||
<field name="stateSelect"/>
|
||||
</grid>
|
||||
|
||||
<form name="purchase-order-supplier-line-supplier-form" title="Supplier request" model="com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine" width="large">
|
||||
<panel name="mainPanel" >
|
||||
<field name="stateSelect" showTitle="false" readonly="true" colSpan="12" widget="NavSelect"/>
|
||||
<field name="purchaseOrderLine.purchaseOrder.purchaseOrderSeq"/>
|
||||
<field name="purchaseOrderLine.product" form-view="product-form" grid-view="product-grid"/>
|
||||
<field name="purchaseOrderLine.qty"/>
|
||||
<field name="purchaseOrderLine.unit" form-view="unit-form" grid-view="unit-grid"/>
|
||||
<field name="availableQty" readonlyIf="stateSelect != 1"/>
|
||||
<field name="purchaseOrderLine.desiredDelivDate"/>
|
||||
<field name="price" readonlyIf="stateSelect != 1"/>
|
||||
<field name="estimatedDelivDate" readonlyIf="stateSelect != 1"/>
|
||||
<button name="submit" title="Submit" showIf="stateSelect == 1" onClick="save,action-purchase-order-supplier-line-record-submit,save"/>
|
||||
</panel>
|
||||
<panel name="commentsPanel">
|
||||
<field name="comments" colSpan="12"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<action-record name="action-purchase-order-supplier-line-record-request" model="com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine">
|
||||
<field name="stateSelect" expr="1"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-purchase-order-supplier-line-record-submit" model="com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine">
|
||||
<field name="stateSelect" expr="2"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-purchase-order-supplier-line-record-not-accept" model="com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine">
|
||||
<field name="stateSelect" expr="4"/>
|
||||
</action-record>
|
||||
|
||||
<action-record name="action-purchase-order-supplier-line-record-cancel" model="com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine">
|
||||
<field name="stateSelect" expr="5"/>
|
||||
</action-record>
|
||||
|
||||
<action-method name="action-purchase-order-supplier-line-method-accept">
|
||||
<call class="com.axelor.apps.suppliermanagement.web.PurchaseOrderSupplierLineController" method="accept"/>
|
||||
</action-method>
|
||||
|
||||
<action-method name="action-purchase-order-supplier-line-method-supplier-partner-domain">
|
||||
<call class="com.axelor.apps.suppliermanagement.web.PurchaseOrderSupplierLineController" method="supplierPartnerDomain"/>
|
||||
</action-method>
|
||||
|
||||
<action-attrs name="action-purchase-order-supplier-line-attrs-new">
|
||||
<attribute name="readonly" for="supplierPartner" expr="eval: false"/>
|
||||
</action-attrs>
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?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">
|
||||
|
||||
|
||||
<!-- Nomenclature : * name : "interfaceName" + "fieldName" + ".select" -->
|
||||
|
||||
<selection name="isuppliermanagement.purchase.order.supplier.line.state.select">
|
||||
<option value="1">Requested</option>
|
||||
<option value="2">Submitted</option>
|
||||
<option value="3">Accepted</option>
|
||||
<option value="4">Not accepted</option>
|
||||
<option value="5">Canceled</option>
|
||||
</selection>
|
||||
|
||||
|
||||
</object-views>
|
||||
@@ -0,0 +1,101 @@
|
||||
<?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-view name="wizard-supplier-view" title="My space" model="com.axelor.apps.base.db.Wizard">
|
||||
<view type="form" name="wizard-supplier-form"/>
|
||||
<view-param name="show-toolbar" value="false"/>
|
||||
</action-view>
|
||||
|
||||
<form name="wizard-supplier-form" title="My space" model="com.axelor.apps.base.db.Wizard">
|
||||
<panel name="mainPanel" hidden="true">
|
||||
<field name="id"/>
|
||||
</panel>
|
||||
<panel name="actionsPanel">
|
||||
<button name="myPurchaseOrderBtn" title="My purchase orders" onClick="wizard-supplier-form-open-my-purchase-order" css="img-button client-img-menu" icon="img/128px/clientMenuSo_128px.jpg"/>
|
||||
<button name="myRFQToCompleteBtn" title="My R.F.Q. to complete" onClick="wizard-supplier-form-open-my-rfq-to-complete" css="img-button client-img-menu" icon="img/128px/clientMenuInvoice_128px.jpg"/>
|
||||
<button name="myRFQBtn" title="My R.F.Q." onClick="wizard-supplier-form-open-my-rfq" css="img-button client-img-menu" icon="img/128px/clientMenuTicket_128px.jpg"/>
|
||||
<button name="myStockMoveBtn" title="My deliveries" onClick="wizard-supplier-form-open-stock-move" css="img-button client-img-menu" icon="img/128px/clientMenuTicket_128px.jpg"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
<action-view name="wizard-supplier-form-open-my-purchase-order" title="My purchase orders"
|
||||
model="com.axelor.apps.purchase.db.PurchaseOrder">
|
||||
<view type="grid" name="purchase-order-grid"/>
|
||||
<view type="form" name="purchase-order-form"/>
|
||||
<domain>self.supplierPartner = :_myPartner AND self.statusSelect in (2,3,4,5)</domain>
|
||||
<context name="_myPartner" expr="call:com.axelor.apps.base.service.user.UserService:getUserPartner()"/>
|
||||
</action-view>
|
||||
|
||||
<action-view name="wizard-supplier-form-open-my-rfq-to-complete" title="My R.F.Q. to complete"
|
||||
model="com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine">
|
||||
<view type="grid" name="purchase-order-supplier-line-supplier-grid"/>
|
||||
<view type="form" name="purchase-order-supplier-line-supplier-form"/>
|
||||
<domain>self.supplierPartner = :_myPartner AND self.stateSelect = 1</domain>
|
||||
<context name="_myPartner" expr="call:com.axelor.apps.base.service.user.UserService:getUserPartner()"/>
|
||||
</action-view>
|
||||
|
||||
<action-view name="wizard-supplier-form-open-my-rfq" title="My R.F.Q."
|
||||
model="com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine">
|
||||
<view type="grid" name="purchase-order-supplier-line-supplier-grid"/>
|
||||
<view type="form" name="purchase-order-supplier-line-supplier-form"/>
|
||||
<domain>self.supplierPartner = :_myPartner AND self.stateSelect in (2,3,4)</domain>
|
||||
<context name="_myPartner" expr="call:com.axelor.apps.base.service.user.UserService:getUserPartner()"/>
|
||||
</action-view>
|
||||
|
||||
<action-view name="wizard-supplier-form-open-stock-move" title="My deliveries"
|
||||
model="com.axelor.apps.stock.db.StockMove">
|
||||
<view type="grid" name="stock-move-supplier-grid"/>
|
||||
<view type="form" name="stock-move-supplier-form"/>
|
||||
<domain>self.typeSelect = 3 AND self.partner = :_myPartner</domain>
|
||||
<context name="_myPartner" expr="call:com.axelor.apps.base.service.user.UserService:getUserPartner()"/>
|
||||
</action-view>
|
||||
|
||||
<grid name="stock-move-supplier-grid" title="Stock moves" model="com.axelor.apps.stock.db.StockMove" orderBy="-estimatedDate" canNew="false" canDelete="false">
|
||||
<field name="stockMoveSeq"/>
|
||||
<field name="estimatedDate"/>
|
||||
<field name="realDate"/>
|
||||
<field name="toAddress"/>
|
||||
<field name="company" if="__config__.app.getApp('base').getEnableMultiCompany()"/>
|
||||
<field name="partner"/>
|
||||
<field name="statusSelect"/>
|
||||
</grid>
|
||||
|
||||
<form name="stock-move-supplier-form" title="Stock move" model="com.axelor.apps.stock.db.StockMove" canNew="false" canDelete="false" canCopy="false">
|
||||
<panel name="statusPanel" >
|
||||
<field name="statusSelect" readonly="true" widget="NavSelect" colSpan="12"/>
|
||||
</panel>
|
||||
<panel name="generalInfoPanel" readonly="true">
|
||||
<panel name="detailsPanel" title="Stock move reference">
|
||||
<field name="stockMoveSeq" colSpan="12"/>
|
||||
<field name="name" colSpan="12"/>
|
||||
<field name="company" widget="SuggestBox" form-view="company-form" colSpan="12"/>
|
||||
<field name="partner" domain="self.isContact = false" form-view="partner-form" grid-view="partner-grid" colSpan="12"/>
|
||||
</panel>
|
||||
<panel name="stockMoveInformationsPanel" title="Stock move informations">
|
||||
<field name="estimatedDate" colSpan="12"/>
|
||||
<field name="realDate" title="Receipt date" colSpan="12"/>
|
||||
<field name="fromAddress" showIf="typeSelect == 3" colSpan="12"/>
|
||||
</panel>
|
||||
</panel>
|
||||
<panel-related name="stockMoveLineListPanel" field="stockMoveLineList" readonlyIf="company == null || fromStockLocation == null" colSpan="12" canNew="false" canRemove="false" form-view="stock-move-line-supplier-form" grid-view="stock-move-line-supplier-grid"/>
|
||||
</form>
|
||||
|
||||
<grid name="stock-move-line-supplier-grid" title="Stock move lines" model="com.axelor.apps.stock.db.StockMoveLine" editable="true">
|
||||
<field name="product" readonly="true"/>
|
||||
<field name="shippedQty"/>
|
||||
<field name="unit" readonly="true"/>
|
||||
<field name="shippedDate"/>
|
||||
</grid>
|
||||
|
||||
<form name="stock-move-line-supplier-form" title="Stock move line" model="com.axelor.apps.stock.db.StockMoveLine">
|
||||
<panel name="mainPanel" >
|
||||
<field name="product" readonly="true"/>
|
||||
<field name="shippedQty"/>
|
||||
<field name="unit" readonly="true"/>
|
||||
<field name="shippedDate"/>
|
||||
</panel>
|
||||
</form>
|
||||
|
||||
</object-views>
|
||||
Reference in New Issue
Block a user