@Transactional
  public String save() {
    String res = null;

    try {

      if (entity.getDetails().size() <= 0) {
        facesMessages.add("Senet Bilgisi Girilmedi!");
        return BaseConsts.FAIL;
      }

      res = super.save();

      if (res.equals(BaseConsts.SUCCESS)) {

        for (PromissoryFromContactPayrollDetail cpd : entity.getDetails()) {
          PromissoryNote promissory = cpd.getPromissory();
          // senedin carisini kaydet metodunda da kaydedelim. popupPromissoryCreate metodunda master
          // da cari seçmeden senet eklenirse senedin carisi null oluyordu.
          promissory.setContact(entity.getContact());
          if (!promissoryAction.alreadySaved(
              promissory, DocumentType.PromissoryFromContactPayroll, entity.getId())) {

            PromissoryParamModel cpm = new PromissoryParamModel();
            cpm.setPromissory(promissory);
            cpm.setNewStatus(ChequeStatus.Portfoy);
            cpm.setDocumentId(entity.getId());
            cpm.setDocumentType(DocumentType.PromissoryFromContactPayroll);
            promissoryAction.changePosition(cpm);

            entityManager.merge(promissory);
          }
        }
        financeTxnAction.savePromissoryFromContactPayroll(entity);

        entityManager.flush();
      }

    } catch (Exception e) {
      log.error("Hata :", e);
      e.printStackTrace();
      res = BaseConsts.FAIL;
    }
    return res;
  }