Current section
Files
Jump to
Current section
Files
lib/events/products.ex
defmodule PLM.Products do
require Logger
use N2O, with: [:n2o, :kvs, :nitro]
use FORM
use BPE
require ERP
def header() do
panel(
id: :header,
class: :th,
body: [
panel(class: :column6, body: "Code"),
panel(class: :column10, body: "KPI"),
panel(class: :column6, body: "People"),
panel(class: :column20, body: "Income/Outcome"),
panel(class: :column20, body: "Control")
]
)
end
def months() do
zip =
:lists.zip(:lists.seq(1, 12), [
:Jan,
:Feb,
:Mar,
:Apr,
:May,
:Jun,
:Jul,
:Aug,
:Sep,
:Oct,
:Nov,
:Dec
])
{{_, x, _}, _} = :calendar.local_time()
{a, b} = :lists.split(x, zip)
piz = b ++ a
half = :lists.reverse(:lists.sublist(:lists.reverse(piz, 1), 6))
{x, :lists.flatten(:io_lib.format("~p", [:erlang.element(2, :lists.unzip(half))]))}
end
def event(:init) do
NITRO.clear(:tableRow)
NITRO.clear(:tableHead)
NITRO.insert_top(:tableHead, PLM.Products.header())
for i <- KVS.feed('/plm/products') do
code = ERP."Product"(i, :code)
# months
h = 6
s =
:lists.map(
fn ERP."Payment"(price: {_, a2}, volume: {_, b2}) -> :erlang.integer_to_list(a2 * b2) end,
KVS.head('/plm/' ++ code ++ '/income', h)
)
y = '[' ++ :string.join(s ++ :lists.duplicate(h - length(s), '0'), ',') ++ ']'
{_, x} = months()
send(self(), {:direct, {:chart, code, x, y, i}})
end
end
def event({:invest, code}), do: NITRO.redirect("product.htm?p=" <> code)
def event({:chart, code, x, y, i}) do
NITRO.insert_bottom(:tableRow, PLM.Rows.Product.new(code, i))
NITRO.wire('draw_chart(\'' ++ code ++ '\',' ++ x ++ ',' ++ y ++ ');')
end
def event(any), do: IO.inspect(any)
end