package module.workingCapital.domain; enum WorkingCapitalInitialization.WorkingCapitalInitializationState as WorkingCapitalInitializationState; enum module.workingCapital.domain.util.PaymentMethod as PaymentMethod; valueType pt.ist.bennu.core.domain.util.Money as Money { externalizeWith { String exportAsString(); } internalizeWith importFromString(); } class WorkingCapitalSystem { Money acquisitionValueLimit; } class WorkingCapitalYear implements .pt.ist.bennu.core.domain.VirtualHostAware { Integer year; } class WorkingCapital implements .pt.ist.bennu.core.domain.VirtualHostAware { } class WorkingCapitalInitialization implements .pt.ist.bennu.core.domain.VirtualHostAware { DateTime requestCreation; Money requestedAnualValue; Money authorizedAnualValue; Money maxAuthorizedAnualValue; String fiscalId; String internationalBankAccountNumber; DateTime aprovalByUnitResponsible; DateTime authorizationByUnitResponsible; DateTime verificationByAccounting; WorkingCapitalInitializationState state; DateTime lastSubmission; DateTime refundRequested; DateTime acceptedResponsability; String fundAllocationId; } class WorkingCapitalInitializationReenforcement extends WorkingCapitalInitialization { Money requestedReenforcementValue; Money authorizedReenforcementValue; } class WorkingCapitalProcess extends .module.workflow.domain.WorkflowProcess implements .pt.ist.bennu.core.domain.VirtualHostAware { } class WorkingCapitalRequest implements .pt.ist.bennu.core.domain.VirtualHostAware { DateTime requestCreation; Money requestedValue; PaymentMethod paymentMethod; DateTime processedByTreasury; } class AcquisitionClassification implements .pt.ist.bennu.core.domain.VirtualHostAware { String description (REQUIRED); String economicClassification (REQUIRED); String pocCode (REQUIRED); } class WorkingCapitalAcquisition extends .module.finance.domain.Provision implements .pt.ist.bennu.core.domain.VirtualHostAware { String documentNumber; String description; Money valueWithoutVat; DateTime approved; DateTime rejectedApproval; DateTime verified; DateTime notVerified; DateTime submitedForVerification; Boolean isCanceled; } class WorkingCapitalTransaction implements .pt.ist.bennu.core.domain.VirtualHostAware { Integer number; DateTime transationInstant; Money value; Money accumulatedValue; Money balance; Money debt; } class WorkingCapitalAcquisitionTransaction extends WorkingCapitalTransaction { } class WorkingCapitalAcquisitionSubmission extends WorkingCapitalTransaction { Boolean paymentRequired; } class WorkingCapitalPayment extends WorkingCapitalTransaction { String paymentIdentification; } class WorkingCapitalRefund extends WorkingCapitalTransaction { PaymentMethod paymentMethod; } class ExceptionalWorkingCapitalRefund extends WorkingCapitalTransaction { String caseDescription; } class WorkingCapitalInvoiceFile extends .module.workflow.domain.ProcessFile { } class WorkingCapitalAcquisitionSubmissionDocument extends .module.workflow.domain.ProcessFile { } class EmailDigester extends .pt.ist.bennu.core.domain.scheduler.Task { } relation VirtualHostWorkingCapitalSystem { WorkingCapitalSystem playsRole workingCapitalSystem; .pt.ist.bennu.core.domain.VirtualHost playsRole virtualHosts { multiplicity *; } } relation WorkingCapitalInvoiceFileWorkingCapitalTransaction { WorkingCapitalInvoiceFile playsRole invoice; WorkingCapitalTransaction playsRole transaction; } relation WorkingCapitalAcquisitionSubmissionDocumentWorkingCapitalAcquisitionSubmission { WorkingCapitalAcquisitionSubmissionDocument playsRole document; WorkingCapitalAcquisitionSubmission playsRole transaction; } relation MyOrgWorkingCapitalSystem { .pt.ist.bennu.core.domain.MyOrg playsRole myOrg; WorkingCapitalSystem playsRole workingCapitalSystem; } relation WorkingCapitalSystemWorkingCapitalYear { WorkingCapitalSystem playsRole workingCapitalSystem; WorkingCapitalYear playsRole workingCapitalYears { multiplicity *; } } relation WorkingCapitalSystemWorkingCapital { WorkingCapitalSystem playsRole workingCapitalSystem; WorkingCapital playsRole workingCapitals { multiplicity *; } } relation WorkingCapitalSystemWorkingCapitalInitialization { WorkingCapitalSystem playsRole workingCapitalSystem; WorkingCapitalInitialization playsRole workingCapitalInitializations { multiplicity *; } } relation WorkingCapitalWorkingCapitalYear { WorkingCapitalYear playsRole workingCapitalYear; WorkingCapital playsRole workingCapitals { multiplicity *; } } relation WorkingCapitalProcessWorkingCapital { WorkingCapitalProcess playsRole workingCapitalProcess; WorkingCapital playsRole workingCapital; } relation WorkingCapitalUnit { .pt.ist.expenditureTrackingSystem.domain.organization.Unit playsRole unit; WorkingCapital playsRole workingCapitals { multiplicity *; } } relation WorkingCapitalMovementResponsible { .module.organization.domain.Person playsRole movementResponsible; WorkingCapital playsRole movementResponsibleWorkingCapitals { multiplicity *; } } relation WorkingCapitalWorkingCapitalInitialization { WorkingCapital playsRole workingCapital; WorkingCapitalInitialization playsRole workingCapitalInitializations { multiplicity *; } } relation WorkingCapitalInitializationRequestor { .module.organization.domain.Person playsRole requestor; WorkingCapitalInitialization playsRole requestedWorkingCapitalInitializations { multiplicity *; } } relation WorkingCapitalInitializationResponsibleForUnitApproval { .pt.ist.expenditureTrackingSystem.domain.authorizations.Authorization playsRole responsibleForUnitApproval; WorkingCapitalInitialization playsRole approvedWorkingCapitalInitializations { multiplicity *; } } relation WorkingCapitalInitializationResponsibleForUnitAuthorization { .module.organization.domain.Accountability playsRole responsibleForUnitAuthorization; WorkingCapitalInitialization playsRole authorizedWorkingCapitalInitializations { multiplicity *; } } relation WorkingCapitalInitializationResponsibleForAccountingVerification { .module.organization.domain.Person playsRole responsibleForAccountingVerification; WorkingCapitalInitialization playsRole verifiedAccountingWorkingCapitalInitializations { multiplicity *; } } relation WorkingCapitalSystemManagementUnit { WorkingCapitalSystem playsRole workingCapitalSystemFromManagmentUnit; .module.organization.domain.Unit playsRole managementUnit; } relation WorkingCapitalSystemsManagingAccountabilityType { .module.organization.domain.AccountabilityType playsRole managingAccountabilityType; WorkingCapitalSystem playsRole workingCapitalSystemsFromManagingAccountabilityType { multiplicity *; } } relation WorkingCapitalSystemWorkingCapitalRequest { WorkingCapitalSystem playsRole workingCapitalSystem; WorkingCapitalRequest playsRole workingCapitalRequests { multiplicity *; } } relation WorkingCapitalWorkingCapitalRequest { WorkingCapital playsRole workingCapital; WorkingCapitalRequest playsRole workingCapitalRequests { multiplicity *; } } relation WorkingCapitalRequestRequester { .module.organization.domain.Person playsRole workingCapitalRequester; WorkingCapitalRequest playsRole workingCapitalRequestsFromRequesters { multiplicity *; } } relation WorkingCapitalRequestTreasuryProcessor { .module.organization.domain.Person playsRole workingCapitalTreasuryProcessor; WorkingCapitalRequest playsRole workingCapitalRequestsFromTreasuryProcessor { multiplicity *; } } relation WorkingCapitalSystemAcquisitionClassification { WorkingCapitalSystem playsRole workingCapitalSystem; AcquisitionClassification playsRole acquisitionClassifications { multiplicity *; } } relation WorkingCapitalSystemWorkingCapitalTransaction { WorkingCapitalSystem playsRole workingCapitalSystem; WorkingCapitalTransaction playsRole workingCapitalTransactions { multiplicity *; } } relation WorkingCapitalWorkingCapitalTransaction { WorkingCapital playsRole workingCapital; WorkingCapitalTransaction playsRole workingCapitalTransactions { multiplicity *; } } relation WorkingCapitalTransactionPerson { .module.organization.domain.Person playsRole person; WorkingCapitalTransaction playsRole workingCapitalTransactions { multiplicity *; } } relation WorkingCapitalRequestWorkingCapitalPayment { WorkingCapitalRequest playsRole workingCapitalRequest; WorkingCapitalPayment playsRole workingCapitalPayment; } relation WorkingCapitalSystemWorkingCapitalAcquisition { WorkingCapitalSystem playsRole workingCapitalSystem; WorkingCapitalAcquisition playsRole workingCapitalAcquisitions { multiplicity *; } } relation WorkingCapitalWorkingCapitalAcquisition { WorkingCapital playsRole workingCapital; WorkingCapitalAcquisition playsRole workingCapitalAcquisitions { multiplicity *; } } relation WorkingCapitalAcquisitionWorkingCapitalAcquisitionTransaction { WorkingCapitalAcquisition playsRole workingCapitalAcquisition; WorkingCapitalAcquisitionTransaction playsRole workingCapitalAcquisitionTransaction; } relation WorkingCapitalAcquisitionSubmissionWorkingCapitalAcquisitionTransactions { WorkingCapitalAcquisitionSubmission playsRole workingCapitalAcquisitionSubmission; WorkingCapitalAcquisitionTransaction playsRole workingCapitalAcquisitionTransactions { multiplicity *; } } relation WorkingCapitalAcquisitionAcquisitionClassification { WorkingCapitalAcquisition playsRole workingCapitalAcquisitions { multiplicity *; } AcquisitionClassification playsRole acquisitionClassification; } relation WorkingCapitalAcquisitionApprover { .pt.ist.expenditureTrackingSystem.domain.authorizations.Authorization playsRole approver; WorkingCapitalAcquisition playsRole workingCapitalAcquisitionsFromApprover { multiplicity *; } } relation WorkingCapitalAcquisitionVerifier { .module.organization.domain.Person playsRole verifier; WorkingCapitalAcquisition playsRole workingCapitalAcquisitionsFromVerifier { multiplicity *; } } relation WorkingCapitalInitialization { .pt.ist.expenditureTrackingSystem.domain.organization.AccountingUnit playsRole accountingUnit; WorkingCapitalInitialization playsRole workingCapitalInitialization { multiplicity *; } }