guide.addGuideSituations(guideSituation);
    public InfoGuide run(InfoGuide infoGuide, String othersRemarks, Double othersPrice, String remarks,            GuideState situationOfGuide, String paymentType) throws FenixServiceException,            ExcepcaoPersistencia {        GuideSituation guideSituation = null;        // Check the Guide Situation        if (situationOfGuide.equals(GuideState.ANNULLED))            throw new InvalidSituationServiceException();        InfoGuideEntry infoGuideEntry = new InfoGuideEntry();        if ((othersPrice != null) && (othersPrice.floatValue() > 0)) {            infoGuideEntry.setDescription(othersRemarks);            infoGuideEntry.setPrice(othersPrice);            infoGuideEntry.setInfoGuide(infoGuide);            infoGuideEntry.setDocumentType(DocumentType.OTHERS);            infoGuideEntry.setGraduationType(GraduationType.MASTER_DEGREE);            infoGuideEntry.setQuantity(new Integer(1));            List entries = infoGuide.getInfoGuideEntries();            entries.add(infoGuideEntry);            infoGuide.setInfoGuideEntries(entries);        }        // Calculate the Guide Total Price        infoGuide.setTotal(CalculateGuideTotal.calculate(infoGuide));        // Get the Guide Number        Integer guideNumber = persistentSupport.getIPersistentGuide().generateGuideNumber(infoGuide.getYear());        infoGuide.setNumber(guideNumber);        // Create the new Guide Situation        InfoGuideSituation infoGuideSituation = new InfoGuideSituation();        infoGuideSituation.setState(new State(State.ACTIVE));        infoGuideSituation.setRemarks(remarks);        infoGuideSituation.setInfoGuide(infoGuide);        Calendar calendar = Calendar.getInstance();        infoGuideSituation.setDate(calendar.getTime());        infoGuideSituation.setSituation(situationOfGuide);        Person person = (Person) persistentObject.readByOID(Person.class,                infoGuide.getInfoPerson().getIdInternal());        ExecutionDegree executionDegree = (ExecutionDegree) persistentObject                .readByOID(ExecutionDegree.class, infoGuide.getInfoExecutionDegree().getIdInternal());        Contributor contributor = (Contributor) persistentObject.readByOID(                Contributor.class, infoGuide.getInfoContributor().getIdInternal());        Guide guide = DomainFactory.makeGuide();        guide.setExecutionDegree(executionDegree);        guide.setContributor(contributor);        guide.setPerson(person);        guide.setCreationDate(infoGuide.getCreationDate());        guide.setGuideRequester(infoGuide.getGuideRequester());        guide.setNumber(infoGuide.getNumber());        guide.setPaymentDate(infoGuide.getPaymentDate());        guide.setPaymentType(infoGuide.getPaymentType());        guide.setRemarks(infoGuide.getRemarks());        guide.setTotal(infoGuide.getTotal());        guide.setVersion(infoGuide.getVersion());                guide.setYear(infoGuide.getYear());        if (situationOfGuide.equals(GuideState.PAYED)) {            guide.setPaymentType(PaymentType.valueOf(paymentType));            guide.setPaymentDate(calendar.getTime());        }        // Write the new Entries of the Guide        for (InfoGuideEntry infoGuideEntryIter : (List<InfoGuideEntry>) infoGuide.getInfoGuideEntries()) {            GuideEntry guideEntry = DomainFactory.makeGuideEntry();                        guideEntry.setDescription(infoGuideEntryIter.getDescription());            guideEntry.setDocumentType(infoGuideEntryIter.getDocumentType());            guideEntry.setGraduationType(infoGuideEntryIter.getGraduationType());            guideEntry.setPrice(infoGuideEntryIter.getPrice());            guideEntry.setQuantity(infoGuideEntryIter.getQuantity());                        guide.addGuideEntries(guideEntry);                    }        // Write the New Guide Situation        guideSituation = DomainFactory.makeGuideSituation(situationOfGuide, remarks, calendar.getTime(), guide,                new State(State.ACTIVE));        guide.addGuideSituations(guideSituation);        InfoGuide result = InfoGuideWithPersonAndExecutionDegreeAndContributor.newInfoFromDomain(guide);        result.setInfoGuideEntries(infoGuide.getInfoGuideEntries());        result.setInfoGuideSituation(infoGuideSituation);        result.setInfoGuideSituations(new ArrayList(1));        result.getInfoGuideSituations().add(infoGuideSituation);        return result;    }