/**
* Axelor Business Solutions
*
* Copyright (C) 2016 Axelor (<http://axelor.com>).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.axelor.apps.purchase.service;
import java.util.List;
import org.joda.time.LocalDate;
import com.axelor.apps.base.db.Company;
import com.axelor.apps.base.db.Currency;
import com.axelor.apps.base.db.Partner;
import com.axelor.apps.base.db.PriceList;
import com.axelor.apps.purchase.db.PurchaseOrder;
import com.axelor.auth.db.User;
import com.axelor.exception.AxelorException;
import com.google.inject.persist.Transactional;
public interface PurchaseOrderService {
PurchaseOrder _computePurchaseOrderLines(PurchaseOrder purchaseOrder) throws AxelorException ;
@Transactional(rollbackOn = {AxelorException.class, Exception.class})
PurchaseOrder computePurchaseOrder(PurchaseOrder purchaseOrder) throws AxelorException ;
/**
* Peupler une commande.
* <p>
* Cette fonction permet de déterminer les tva d'une commande à partir des lignes de factures passées en paramètres.
* </p>
*
* @param purchaseOrder
*
* @throws AxelorException
*/
void _populatePurchaseOrder(PurchaseOrder purchaseOrder) throws AxelorException;
/**
* Calculer le montant d'une commande.
* <p>
* Le calcul est basé sur les lignes de TVA préalablement créées.
* </p>
*
* @param purchaseOrder
* @throws AxelorException
*/
void _computePurchaseOrder(PurchaseOrder purchaseOrder) throws AxelorException;
/**
* Permet de réinitialiser la liste des lignes de TVA
* @param purchaseOrder
* Une commande.
*/
void initPurchaseOrderLineTax(PurchaseOrder purchaseOrder);
PurchaseOrder createPurchaseOrder(User buyerUser, Company company, Partner contactPartner, Currency currency,
LocalDate deliveryDate, String internalReference, String externalReference, LocalDate orderDate,
PriceList priceList, Partner supplierPartner) throws AxelorException ;
String getSequence(Company company) throws AxelorException ;
public String getDraftSequence(Long purchaseOrderId);
public void setDraftSequence(PurchaseOrder purchaseOrder);
@Transactional(rollbackOn = {AxelorException.class, Exception.class})
public Partner validateSupplier(PurchaseOrder purchaseOrder);
public void savePurchaseOrderPDFAsAttachment(PurchaseOrder purchaseOrder) throws AxelorException;
public void requestPurchaseOrder(PurchaseOrder purchaseOrder) throws Exception;
public PurchaseOrder mergePurchaseOrders(List<PurchaseOrder> purchaseOrderList, Currency currency, Partner supplierPartner, Company company, Partner contactPartner, PriceList priceList) throws AxelorException;
public void updateCostPrice(PurchaseOrder purchaseOrder);
public void draftPurchaseOrder(PurchaseOrder purchaseOrder);
public void validatePurchaseOrder(PurchaseOrder purchaseOrder);
public void finishPurchaseOrder(PurchaseOrder purchaseOrder);
public void cancelPurchaseOrder(PurchaseOrder purchaseOrder);
}