#? #инвентарь @rf
Как вы менеджите мелкооптовые закупки расходников? Нужно какое-то решение которое будет пинать меня когда у меня будут подходить к концу вещи типа витаминок, которые расходуются абсолютно предсказуемо, но заказывать нужно сильно заранее их исчерпания чтобы не возникло проблем из-за тормознутого магазина/почты/таможни/контрабандиста. Такое можно наговнякать за полчаса на любимом ЯП, но вдруг уже что-то готовое есть? Бонусные очки если оно умеет из истории реального расхода предсказывать когда запас иссякнет.
@rf Наговнякал по-быстрому:
#!/usr/bin/runhaskell
import Data.Maybe
import Data.Time.Calendar.OrdinalDate
import Data.Time.Format.ISO8601
data Stock = Stock
{ name :: String
, perDay :: Double
, startingDay :: Day
, stockItems :: Word
} deriving (Show)
dayOut :: Stock -> Day
dayOut s = toEnum (fromEnum (startingDay s) + floor ((fromIntegral $ stockItems s) / (perDay s)))
runsOut :: Stock -> String
runsOut s = name s ++ " runs out at " ++ show (dayOut s)
vitA = Stock
"Vitamin A"
(1 / 3.5) -- twice a week (10kIU capsules)
(fromJust $ iso8601ParseM "2025-12-22")
(floor $ 81 / 0.6) -- 600mg brutto per capsule
vitB = Stock
"Vitamin B"
(1 / 3.5)
(fromJust $ iso8601ParseM "2025-12-22")
73
vitK = Stock
"Vitamin K"
(4 / 7) -- about once every two days (200μg tablets MK-7)
(fromJust $ iso8601ParseM "2025-12-24")
(floor $ 27 / 0.108)
main = putStr $ unlines $ map runsOut [vitA, vitB, vitK]
@L29Ah @rf hledger balance --budget
Указываешь в файле периодическую проводку типа
~ daily
Потребление:Витамины:B6 400 мг
Потребление:Элементы:Магний 1200 мг
Доступные -1600 мг
И тебе пишется таблица с нужными временными рамками до исчерпания остатков