/* * Sale extended with MiFID, 2 levels of risk * regimentation of the action propose_solution and propose_solution2 */ initial: c(fp,inv,invested). constitutive: /* * The following implements the MiFID directive */ interview means investor_identified, document_supplied if !investor_identified & !fi_discarded & !contract_abort & !contract_ended & !rejected_proposal . profile means create(c(fp, inv, evaluation)), investor_classified if !investor_classified & investor_identified & !fi_discarded & !contract_ended & !contract_abort & !rejected_proposal. classify means classified if !classified & !fi_discarded & !proposed_RiskL & !proposed_RiskL2 & !contract_abort & !contract_ended & !rejected_proposal. fi_evaluation means create(c(fp, inv, proposed_RiskL)), evaluation if classified & investor_identified & !evaluation & !fi_discarded & !contract_abort & !contract_ended & !rejected_proposal. fi_discard means fi_discarded, cancel(c(fp, inv, invested)), cancel(c(fp, inv, proposed_RiskL)) if evaluation & !fi_discarded & !proposed_RiskL & !proposed_RiskL2 & !contract_abort & !contract_ended & !rejected_proposal. order_verification means order_verified if !order_verified & order_signed & !contract_ended & !contract_abort. withdraw means contract_abort, release(c(bank, inv, executed_order)), cancel(c(inv, bank, contract_ended)) if contract_sent & !contract_ended & !contract_abort. /* * The following implements the Sale */ propose_solution means proposed_RiskL if !proposed_RiskL & !proposed_RiskL2 & !rejected_proposal & // Regimentation !fi_discarded & evaluation. propose_solution2 means proposed_RiskL2 if !proposed_RiskL2 & !proposed_RiskL & !rejected_proposal & // Regimentation !fi_discarded & evaluation. reject_proposal means rejected_proposal, release(c(fp, inv, invested)) if !accepted_proposal & ( proposed_RiskL | proposed_RiskL2 ) & !rejected_proposal. sign_order means create(c(inv, bank, contract_ended)), accepted_proposal, order_signed if !order_signed & ( proposed_RiskL | proposed_RiskL2 ) & !rejected_proposal. send_contract means create(c(bank, inv, executed_order)), invested, contract_sent if !contract_sent & order_signed. end means executed_order, contract_ended if contract_sent & !contract_ended & !contract_abort. regulative: c(fp,inv,invested) .-> investor_identified & document_supplied. investor_classified ->. c(fp, inv, proposed_RiskL). order_verified ->. contract_sent. evaluation & !fi_discarded ->. ( proposed_RiskL | proposed_RiskL2 ).