commit 906c906bf96dac3764ace19a209e8483f54820db
parent 3aa2a9775f7d87d5ee9fb5bc2240bc43f4ed8e00
Author: srfsh <dev@srf.sh>
Date: Thu, 20 Oct 2022 15:29:32 +0300
Zenflows.VF.EconomicEvent.Domain: fallback on some values in some types of events
Diffstat:
1 file changed, 68 insertions(+), 16 deletions(-)
diff --git a/src/zenflows/vf/economic_event/domain.ex b/src/zenflows/vf/economic_event/domain.ex
@@ -89,7 +89,7 @@ end
defp handle_multi(action_id, evt, res_params) when action_id in ["raise", "produce"] do
cond do
evt.resource_conforms_to_id != nil ->
- cset =
+ res_params =
res_params
|> Map.put(:primary_accountable_id, evt.receiver_id)
|> Map.put(:custodian_id, evt.receiver_id)
@@ -100,10 +100,9 @@ defp handle_multi(action_id, evt, res_params) when action_id in ["raise", "produ
|> Map.put(:onhand_quantity_has_numerical_value, evt.resource_quantity_has_numerical_value)
|> Map.put(:current_location_id, evt.to_location_id)
|> Map.put(:classified_as, evt.resource_classified_as)
- |> EconomicResource.chgset()
Multi.new()
- |> Multi.insert(:eco_res, cset)
+ |> Multi.insert(:eco_res, EconomicResource.chgset(res_params))
|> Multi.update(:updated_evt, fn %{eco_res: res} ->
Changeset.change(evt, resource_inventoried_as_id: res.id)
end)
@@ -519,6 +518,9 @@ defp handle_multi("transferCustody", evt, res_params) do
fields = ~w[
id custodian_id conforms_to_id
onhand_quantity_has_numerical_value onhand_quantity_has_unit_id
+
+ name note tracking_identifier okhv repo version licensor license metadata
+ classified_as
]a
{res, to_res} =
from(r in EconomicResource,
@@ -584,7 +586,7 @@ defp handle_multi("transferCustody", evt, res_params) do
onhand_quantity_has_numerical_value: evt.resource_quantity_has_numerical_value,
])
else
- cset =
+ res_params =
res_params
|> Map.put(:primary_accountable_id, evt.receiver_id)
|> Map.put(:custodian_id, evt.receiver_id)
@@ -594,10 +596,19 @@ defp handle_multi("transferCustody", evt, res_params) do
|> Map.put(:onhand_quantity_has_unit_id, evt.resource_quantity_has_unit_id)
|> Map.put(:onhand_quantity_has_numerical_value, evt.resource_quantity_has_numerical_value)
|> Map.put(:current_location_id, evt.to_location_id)
- |> EconomicResource.chgset()
+ |> Map.put(:classified_as, evt.resource_classified_as || res.classified_as)
+ |> Map.put_new(:name, res.name)
+ |> Map.put_new(:note, res.note)
+ |> Map.put_new(:tracking_identifier, res.tracking_identifier)
+ |> Map.put_new(:okhv, res.okhv)
+ |> Map.put_new(:repo, res.repo)
+ |> Map.put_new(:version, res.version)
+ |> Map.put_new(:licensor, res.licensor)
+ |> Map.put_new(:license, res.license)
+ |> Map.put_new(:metadata, res.metadata)
Multi.new()
- |> Multi.insert(:to_eco_res, cset)
+ |> Multi.insert(:to_eco_res, EconomicResource.chgset(res_params))
|> Multi.update(:updated_evt, fn %{to_eco_res: res} ->
Changeset.change(evt, to_resource_inventoried_as_id: res.id)
end)
@@ -631,6 +642,9 @@ defp handle_multi("transferAllRights", evt, res_params) do
fields = ~w[
id primary_accountable_id conforms_to_id
accounting_quantity_has_numerical_value accounting_quantity_has_unit_id
+
+ name note tracking_identifier okhv repo version licensor license metadata
+ classified_as
]a
{res, to_res} =
from(r in EconomicResource,
@@ -696,7 +710,7 @@ defp handle_multi("transferAllRights", evt, res_params) do
accounting_quantity_has_numerical_value: evt.resource_quantity_has_numerical_value,
])
else
- cset =
+ res_params =
res_params
|> Map.put(:primary_accountable_id, evt.receiver_id)
|> Map.put(:custodian_id, evt.receiver_id)
@@ -705,10 +719,19 @@ defp handle_multi("transferAllRights", evt, res_params) do
|> Map.put(:accounting_quantity_has_numerical_value, evt.resource_quantity_has_numerical_value)
|> Map.put(:onhand_quantity_has_unit_id, evt.resource_quantity_has_unit_id)
|> Map.put(:onhand_quantity_has_numerical_value, 0)
- |> EconomicResource.chgset()
+ |> Map.put(:classified_as, evt.resource_classified_as || res.classified_as)
+ |> Map.put_new(:name, res.name)
+ |> Map.put_new(:note, res.note)
+ |> Map.put_new(:tracking_identifier, res.tracking_identifier)
+ |> Map.put_new(:okhv, res.okhv)
+ |> Map.put_new(:repo, res.repo)
+ |> Map.put_new(:version, res.version)
+ |> Map.put_new(:licensor, res.licensor)
+ |> Map.put_new(:license, res.license)
+ |> Map.put_new(:metadata, res.metadata)
Multi.new()
- |> Multi.insert(:to_eco_res, cset)
+ |> Multi.insert(:to_eco_res, EconomicResource.chgset(res_params))
|> Multi.update(:updated_evt, fn %{to_eco_res: res} ->
Changeset.change(evt, to_resource_inventoried_as_id: res.id)
end)
@@ -743,6 +766,9 @@ defp handle_multi("transfer", evt, res_params) do
id primary_accountable_id custodian_id conforms_to_id
accounting_quantity_has_numerical_value accounting_quantity_has_unit_id
onhand_quantity_has_numerical_value
+
+ name note tracking_identifier okhv repo version licensor license metadata
+ classified_as
]a
{res, to_res} =
from(r in EconomicResource,
@@ -819,7 +845,7 @@ defp handle_multi("transfer", evt, res_params) do
onhand_quantity_has_numerical_value: evt.resource_quantity_has_numerical_value,
])
else
- cset =
+ res_params =
res_params
|> Map.put(:primary_accountable_id, evt.receiver_id)
|> Map.put(:custodian_id, evt.receiver_id)
@@ -829,10 +855,19 @@ defp handle_multi("transfer", evt, res_params) do
|> Map.put(:onhand_quantity_has_unit_id, evt.resource_quantity_has_unit_id)
|> Map.put(:onhand_quantity_has_numerical_value, evt.resource_quantity_has_numerical_value)
|> Map.put(:current_location_id, evt.to_location_id)
- |> EconomicResource.chgset()
+ |> Map.put(:classified_as, evt.resource_classified_as || res.classified_as)
+ |> Map.put_new(:name, res.name)
+ |> Map.put_new(:note, res.note)
+ |> Map.put_new(:tracking_identifier, res.tracking_identifier)
+ |> Map.put_new(:okhv, res.okhv)
+ |> Map.put_new(:repo, res.repo)
+ |> Map.put_new(:version, res.version)
+ |> Map.put_new(:licensor, res.licensor)
+ |> Map.put_new(:license, res.license)
+ |> Map.put_new(:metadata, res.metadata)
Multi.new()
- |> Multi.insert(:to_eco_res, cset)
+ |> Multi.insert(:to_eco_res, EconomicResource.chgset(res_params))
|> Multi.update(:updated_evt, fn %{to_eco_res: res} ->
Changeset.change(evt, to_resource_inventoried_as_id: res.id)
end)
@@ -869,6 +904,9 @@ defp handle_multi("move", evt, res_params) do
id primary_accountable_id custodian_id conforms_to_id
accounting_quantity_has_numerical_value accounting_quantity_has_unit_id
onhand_quantity_has_numerical_value
+
+ name note tracking_identifier okhv repo version licensor license metadata
+ classified_as
]a
{res, to_res} =
from(r in EconomicResource,
@@ -951,7 +989,7 @@ defp handle_multi("move", evt, res_params) do
onhand_quantity_has_numerical_value: evt.resource_quantity_has_numerical_value,
])
else
- cset =
+ res_params =
res_params
|> Map.put(:primary_accountable_id, evt.receiver_id)
|> Map.put(:custodian_id, evt.receiver_id)
@@ -961,10 +999,19 @@ defp handle_multi("move", evt, res_params) do
|> Map.put(:onhand_quantity_has_unit_id, evt.resource_quantity_has_unit_id)
|> Map.put(:onhand_quantity_has_numerical_value, evt.resource_quantity_has_numerical_value)
|> Map.put(:current_location_id, evt.to_location_id)
- |> EconomicResource.chgset()
+ |> Map.put(:classified_as, evt.resource_classified_as || res.classified_as)
+ |> Map.put_new(:name, res.name)
+ |> Map.put_new(:note, res.note)
+ |> Map.put_new(:tracking_identifier, res.tracking_identifier)
+ |> Map.put_new(:okhv, res.okhv)
+ |> Map.put_new(:repo, res.repo)
+ |> Map.put_new(:version, res.version)
+ |> Map.put_new(:licensor, res.licensor)
+ |> Map.put_new(:license, res.license)
+ |> Map.put_new(:metadata, res.metadata)
Multi.new()
- |> Multi.insert(:to_eco_res, cset)
+ |> Multi.insert(:to_eco_res, EconomicResource.chgset(res_params))
|> Multi.update(:updated_evt, fn %{to_eco_res: res} ->
Changeset.change(evt, to_resource_inventoried_as_id: res.id)
end)
@@ -1005,7 +1052,8 @@ end
| :provider | :receiver
| :resource_inventoried_as | :to_resource_inventoried_as
| :resource_conforms_to | :resource_quantity | :effort_quantity
- | :to_location | :at_location | :realization_of | :triggered_by)
+ | :to_location | :at_location | :realization_of | :triggered_by
+ | :previous_event)
:: EconomicEvent.t()
def preload(eco_evt, :action) do
Action.preload(eco_evt, :action)
@@ -1062,4 +1110,8 @@ end
def preload(eco_evt, :triggered_by) do
Repo.preload(eco_evt, :triggered_by)
end
+
+def preload(eco_evt, :previous_event) do
+ Repo.preload(eco_evt, :previous_event)
+end
end