public void doSave() {

    // Save the entity.
    //
    try {
      DettaglioFatturazioneService dfs = ServiceFactory.createService("DettaglioFatturazione");

      if (id == null) {
        dfs.create(
            dettaglioContrattoGenerale.getId(),
            codiceCondizioniPagamento,
            codiceMetodoPagamento,
            codiceIndirizzo,
            codiceLayoutStampa,
            validoDa,
            validoA);
        logger.debug("Entity successfully created.");

        // Add a message.
        //
        FacesMessage message =
            new FacesMessage(
                FacesMessage.SEVERITY_INFO,
                "Record creato",
                "La creazione del nuovo dettaglio di fatturazione si è conclusa con successo.");
        FacesContext.getCurrentInstance().addMessage(null, message);

      } else {

        dfs.update(
            id,
            codiceCondizioniPagamento,
            codiceMetodoPagamento,
            codiceIndirizzo,
            codiceLayoutStampa,
            validoDa,
            validoA);
        logger.debug("Entity successfully updated.");

        // Add a message.
        //
        FacesMessage message =
            new FacesMessage(
                FacesMessage.SEVERITY_INFO,
                "Record aggiornato",
                "La modifica del dettaglio di fatturazione si è conclusa con successo.");
        FacesContext.getCurrentInstance().addMessage(null, message);
      }

      // Signal to modal dialog that everything went fine.
      //
      RequestContext.getCurrentInstance().addCallbackParam("ok", true);

    } catch (Exception e) {

      logger.warn("Exception caught while saving entity.", e);

      FacesMessage message =
          new FacesMessage(
              FacesMessage.SEVERITY_ERROR,
              "Errore di sistema",
              "Si è verificato un errore in fase di salvataggio del record.");
      FacesContext.getCurrentInstance().addMessage(null, message);
    }
  }