예제 #1
0
  @Override
  @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
  public Boolean remove(Long id) throws IabakoActionForbiddenException {

    saleDAO.deleteAttachedObjects(id);

    Sale sale = saleDAO.findById(id);
    if (sale == null) {
      log.warn("No sale found with id :" + id);
      return false;
    }

    stockRollBack(sale);

    Client client = sale.getClient();

    boolean result = super.remove(id);

    if (client != null) {
      clientService.calculateStatus(client);
    }

    trackingService.addTrackingToUserSession(TrackingType.saleDelete, sale);

    return result;
  }
예제 #2
0
  /**
   * This method is used by SaleModificationForm
   *
   * @param sale
   * @return
   * @throws IabakoActionForbiddenException
   */
  @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
  public Sale save(Sale sale)
      throws IabakoActionForbiddenException, IabakoUniqueConstraintException {

    Enterprise enterprise = getEnterpriseFromSessionUser();
    if (sale.getId() != null && enterprise.getAllRelatedEnterprises().size() > 1) {
      // Do not change Enterprise!
      sale.setEnterprise(saleDAO.findById(sale.getId()).getEnterprise());
    } else {
      sale.setEnterprise(enterprise);
    }

    if (enterprise != null && enterprise.isDemo()) {
      throw new IabakoActionForbiddenException(
          "action_forbidden_for_demo_title", "action_forbidden_for_demo_text", true);
    }

    if (!getDAO().isUniqueNumber(sale)) {
      throw new IabakoUniqueConstraintException(
          messages.getLabel("validation_sale_unique_constraint_error_title"),
          messages.getLabel("validation_sale_unique_constraint_error_text", sale.getNumber()),
          true,
          true);
    }

    Sale saleFromDB = saleDAO.findById(sale.getId());
    setAttributesFromDB(sale, saleFromDB);

    if (!enterprise.getPaymentRequestConfig().isEnabled()
        || (sale.getClient() != null && sale.getClient().isPaymentRequestDisabled())) {
      // If paymentRequest disable, then do not change initial value (it doesn't come from client
      // world)
      sale.setPaymentRequestDisabled(saleFromDB.isPaymentRequestDisabled());
    }

    sale.setDate(GenericTools.getDateFromString(sale.getDateString()));

    trackingService.addTrackingToUserSession(TrackingType.saleModify, sale);

    return rawSave(sale);
  }
예제 #3
0
  @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
  public void duplicateEnMasse(QueryDefinitionDTO saleList)
      throws IabakoUniqueConstraintException, IabakoActionForbiddenException,
          IabakoPackageForbiddenException, IabakoStockException {
    saleList.setPageSize(-1);
    saleList.excludeAllColumns();
    queryDefinitionDAO.executeQueryDefinition(saleList);
    Map<Long, QueryResultDTO> sales = saleList.getResults();

    for (Long idSale : sales.keySet()) {
      Sale sale = saleDAO.findById(idSale);
      duplicate(sale);
    }
  }
예제 #4
0
 private Sale checkIfQuote(Sale sale) {
   if (sale.getSaleQuoteId() != null) {
     Sale saleQuote = saleDAO.findById(Long.parseLong(sale.getSaleQuoteId()));
     if (saleQuote != null && saleQuote.isQuote()) {
       saleQuote.setSaleQuoteId(
           sale.getStatus() == FinancialStatusSale._0_draft
               ? "_draft_" + sale.getId()
               : sale.getId() + "");
       saleQuote.setStatus(FinancialStatusSale._2_quote_transformed);
     } else {
       sale.setSaleQuoteId(null);
     }
     saleDAO.merge(saleQuote);
     return saleQuote;
   }
   return null;
 }